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

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

Java泛型:泛型定義為僅返回類型

Java泛型:泛型定義為僅返回類型

縹緲止盈 2019-12-26 09:18:13
我正在查看GWT的一些GXT代碼,并且遇到了泛型的這種用法,我在Java教程中找不到另一個示例。類名稱是com.extjs.gxt.ui.client.data.BaseModelData您是否要查看所有代碼。以下是重要部分:private RpcMap map;public <X> X get(String property) {  if (allowNestedValues && NestedModelUtil.isNestedProperty(property)) {    return (X)NestedModelUtil.getNestedValue(this, property);  }  return map == null ? null : (X) map.get(property);}X在類中的其他地方或?qū)哟谓Y(jié)構(gòu)中的任何地方都沒有定義,并且當我在eclipse中單擊“轉(zhuǎn)到聲明”時,它只轉(zhuǎn)到<X>公共方法簽名中。我嘗試通過以下兩個示例調(diào)用此方法,以了解發(fā)生了什么:public Date getExpiredate() {    return  get("expiredate");}public String getSubject() {    return  get("subject");}它們編譯并且不顯示任何錯誤或警告。我認為至少我必須進行轉(zhuǎn)換才能使其正常工作。這是否意味著泛型允許一個魔術(shù)返回值,該返回值可以是任何值,并且只會在運行時爆炸?這似乎與仿制藥應該做的相反。誰能給我解釋一下,并且可能給我鏈接一些說明得更好的文檔?我瀏覽了Sun的23頁關(guān)于泛型的pdf文件,每個返回值的示例都在類級別定義或在傳入的參數(shù)之一中定義。
查看完整描述

3 回答

?
郎朗坤

TA貢獻1921條經(jīng)驗 獲得超9個贊

該方法返回您所期望的類型(<X>在方法中定義并且絕對不受限制)。


這非常非常危險,因為沒有規(guī)定返回類型實際上與返回值匹配。


這樣做的唯一好處是,您不必強制轉(zhuǎn)換可以返回任何類型的此類通用查找方法的返回值。


我會說:謹慎使用此類構(gòu)造,因為您幾乎失去了所有類型安全,而獲得的好處是,不必在每次調(diào)用時都編寫顯式強制轉(zhuǎn)換get()。


是的:這幾乎是黑魔法,在運行時會炸毀,打破了泛型應該實現(xiàn)的整個想法。


查看完整回答
反對 回復 2019-12-26
?
幕布斯6054654

TA貢獻1876條經(jīng)驗 獲得超7個贊

類型在方法上聲明。這就是“ <X>”的意思。然后將類型的范圍限定為僅方法,并且與特定的調(diào)用相關(guān)。您的測試代碼編譯的原因是,編譯器會嘗試確定類型,并且只會在無法確定類型時進行投訴。在某些情況下,您必須明確。


例如,對于該聲明Collections.emptySet()是


public static final <T> Set<T> emptySet()

在這種情況下,編譯器可以猜測:


Set<String> s = Collections.emptySet();

但是,如果不能,則必須鍵入:


Collections.<String>emptySet();


查看完整回答
反對 回復 2019-12-26
  • 3 回答
  • 0 關(guān)注
  • 787 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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