我有一个要求,类的属性的类型是通用的,将决定运行时。因此,我想出了下面的类定义使用泛型为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