第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

慕田峪7331174 2019-03-01 10:57:57
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:運行時也沒報錯。
查看完整描述

2 回答

?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗 獲得超8個贊

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

查看完整回答
反對 回復(fù) 2019-03-01
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

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

查看完整回答
反對 回復(fù) 2019-03-01
  • 2 回答
  • 0 關(guān)注
  • 705 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號