我有一個要求,類的屬性的類型是通用的,將決定運行時。因此,我想出了下面的類定義使用泛型爲Java類的屬性
public class Generics<T> {
T t1;
public void put(T t2){
t1 = t2;
}
}
創建一個對象之前,我所知道的類型。因此我想知道如何實例化。我嘗試了以下,但它給編譯錯誤。什麼是正確的方式?
Object obj = getObjFromFactory() // obj can be type say A.class or B.class. I wish to get the class of obj and pass it to Generics
Generics<obj.class> generics = new Generics<obj.class>();
https://stackoverflow.com/documentation/java/92/generics/388/creating-a-generic-class#t=20170622092158177626 – JEY
注意'泛型泛型'會創建一個_raw_類型,這意味着任何泛型檢查都將被停用。它也會是'new Generics()',因爲類型無論如何都是類,所以不需要使用'Sample.class'。 –
Thomas
我認爲我們在這裏有一個XY問題。您無法在運行時決定Java中的通用類的類型。 Java泛型是編譯時構造,在運行時所有泛型都被擦除。因此,您需要告訴我們上下文,您正在使用什麼屬性以及需要在運行時確定哪些屬性,也許我們可以幫助您選擇除泛型以外的其他屬性。 – RealSkeptic