av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

java類型強轉為泛型V,竟然沒有報錯?

瀏覽:138日期: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('已經存在的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('重復的shortName');}return value; } static class Ambiguity {private String name;public Ambiguity(String name) { this.name = name;}public String getName() { return name;} }}

ps:運行時也沒報錯。

問題解答

回答1:

類型擦除為Object,強轉為Object不會報錯。

回答2:

編譯時只會有警告,不會報錯的。Java Collections Framework里其實到處是這樣的強轉。但運行時卻會報錯,如果V不是Ambiguity或者它的父類的話。

標簽: java
主站蜘蛛池模板: 欧美性大战xxxxx久久久 | 婷婷一区二区三区 | 午夜xxx| 午夜一级片 | 精品久久视频 | 三级视频在线 | 精品一区二区三区免费 | 精品久久一区二区 | 黄色日皮视频 | 欧美又大粗又爽又黄大片视频 | 久久一级视频 | 一区二区三区影视 | 香蕉视频导航 | 日日干av | 国产欧美精品一区二区 | 成人免费视频观看视频 | 久久婷婷网 | 日韩免费在线 | 蜜臀久久99精品久久久久宅男 | 日韩色在线 | 超碰人人艹 | 亚洲va韩国va欧美va精品 | 成年人视频网站 | 免费性网站 | 精品一区二区三区四区 | 亚洲欧美日韩一区二区 | 日韩在线欧美 | 亚洲成人一区 | 天天干天天操天天爽 | 国产第二页 | 黄色网址在线播放 | 精品一区二区三区免费看 | 国产在线一区二区 | av中文网 | 天天看片天天爽 | 久久久网 | 国产视频h| 国产精品一区二区三区四区 | 欧美日韩亚洲天堂 | 成人特级毛片 | 久草国产视频 |