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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Java:Instanceof和泛型

Java:Instanceof和泛型

紫衣仙女 2019-12-20 11:17:12
在查看通用數(shù)據(jù)結(jié)構(gòu)中的值索引之前,我想看看它是否甚至this已被參數(shù)化為該類型的實(shí)例。但是當(dāng)我這樣做時(shí),Eclipse會(huì)抱怨:@Overridepublic int indexOf(Object arg0) {    if (!(arg0 instanceof E)) {        return -1;    }這是錯(cuò)誤消息:無(wú)法針對(duì)類型參數(shù)E執(zhí)行instanceof檢查。請(qǐng)改用其擦除對(duì)象,因?yàn)榉盒皖愋托畔⒃谶\(yùn)行時(shí)刪除有什么更好的方法呢?
查看完整描述

3 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

錯(cuò)誤消息說(shuō)明了一切。在運(yùn)行時(shí),該類型已消失,無(wú)法對(duì)其進(jìn)行檢查。


您可以通過(guò)為對(duì)象創(chuàng)建工廠來(lái)捕獲它,如下所示:


 public static <T> MyObject<T> createMyObject(Class<T> type) {

    return new MyObject<T>(type);

 }

然后在對(duì)象的構(gòu)造函數(shù)中存儲(chǔ)該類型,變量,以便您的方法如下所示:


        if (arg0 != null && !(this.type.isAssignableFrom(arg0.getClass()))

        {

            return -1;

        }


查看完整回答
反對(duì) 回復(fù) 2019-12-20
?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您的類擴(kuò)展了具有通用參數(shù)的類,則您還可以在運(yùn)行時(shí)通過(guò)反射來(lái)獲取它,然后將其用于比較,即


class YourClass extends SomeOtherClass<String>

{


   private Class<?> clazz;


   public Class<?> getParameterizedClass()

   {

      if(clazz == null)

      {

         ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();

          clazz = (Class<?>)pt.getActualTypeArguments()[0];

       }

       return clazz;

    }

}

在上述情況下,在運(yùn)行時(shí)將從getParameterizedClass()中獲取String.class并進(jìn)行緩存,因此在進(jìn)行多次檢查時(shí)不會(huì)有任何反射開(kāi)銷。請(qǐng)注意,您可以從ParameterizedType.getActualTypeArguments()方法中通過(guò)索引獲取其他參數(shù)化類型。


查看完整回答
反對(duì) 回復(fù) 2019-12-20
  • 3 回答
  • 0 關(guān)注
  • 2057 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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