国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

java類型強(qiáng)轉(zhuǎn)為泛型V,竟然沒有報錯?

瀏覽:166日期:2023-11-09 10:46:34

問題描述

public class StrictMap<V> extends HashMap<String, V> { private static final long serialVersionUID = -3455861209780003757L; private String name; public StrictMap(int initialCapacity, float loadFactor, String name) {super(initialCapacity, loadFactor);this.name = name; } public StrictMap(int initialCapacity, String name) {super(initialCapacity);this.name = name; } public StrictMap(String name) {this.name = name; } public String getName() {return name; } public void setName(String name) {this.name = name; } @Override public V put(String key, V value) {if (containsKey(key)) { throw new RuntimeException('已經(jīng)存在的key, keyName = ' + key);}if (key.contains('.')) { final String shortName = getShortName(key); if (containsKey(shortName)) {// question 這邊有個問題, 為什么沒有拋出ClassCastException。V ambiguity = (V) new Ambiguity('存在的shortName');super.put(shortName, ambiguity); } else {super.put(shortName, value); }}return super.put(key, value); } @Override public V get(Object key) {V value = super.get(key);if (value == null) { throw new RuntimeException('keyName = ' + key + ', 沒有獲取到value.');}if (value instanceof Ambiguity) { throw new RuntimeException('重復(fù)的shortName');}return value; } static class Ambiguity {private String name;public Ambiguity(String name) { this.name = name;}public String getName() { return name;} }}

ps:運(yùn)行時也沒報錯。

問題解答

回答1:

類型擦除為Object,強(qiáng)轉(zhuǎn)為Object不會報錯。

回答2:

編譯時只會有警告,不會報錯的。Java Collections Framework里其實(shí)到處是這樣的強(qiáng)轉(zhuǎn)。但運(yùn)行時卻會報錯,如果V不是Ambiguity或者它的父類的話。

標(biāo)簽: java
主站蜘蛛池模板: 岢岚县| 商都县| 贺兰县| 肇东市| 垣曲县| 九寨沟县| 长丰县| 高邮市| 墨江| 明光市| 兴国县| 西平县| 永胜县| 屏山县| 礼泉县| 元谋县| 五大连池市| 天水市| 五大连池市| 轮台县| 鞍山市| 彭水| 永顺县| 柞水县| 射阳县| 石景山区| 平阳县| 临武县| 晴隆县| 闻喜县| 蓬溪县| 无极县| 札达县| 汽车| 深水埗区| 九台市| 石门县| 山阴县| 岗巴县| 西乌珠穆沁旗| 肥东县|