繼承泛型后類的實(shí)例化丟失屬性的問題

問題描述

父類Father如下

public class Father {
  private int id;
}

子類Child

public class Child extends Father{
  private String name;
}
public class Test<T extends Father>{
    private void test(){
        T temp = (T)new Father();
    }
}
public class ChildTest extends Test<Child>{
  //sth
}

如果直接在ChildTest調(diào)用test()方法,得到的temp對象是沒有name屬性的

解決辦法

在Test方法中增加

private Class<T> clz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];

然后修改test()方法如下,即可

 private void test(){
        T temp = clz.newInstance();
        //do sth
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容