![](/img/trans.png)
[英]Java Generics, must a Class using Generics always be a Container of some type?
[英]Using Generics for attribute of Java Class
我有一个类的属性的类型是泛型的要求,将决定运行时。 因此我想出了下面的类定义
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>();
Generics<Sample> generics = new Generics<>();
请参阅: Oracle Java教程-泛型
由于直到运行时才知道类型,因此无法显式命名,但是可以使用类型参数来绑定不同代码段的类型,无论什么类型,您都可以确保引用同一类型:
private <T> void myRutine(final Factory<T> factory) {
// ...
final T obj = factory.getObj();
// ...
final Generics<T> generics = new Generics<>();
// ...
generics.put(obj);
// ...
}
在上面的代码中你委托调用代码,以确定T
它可以。 如果不能,它可能只是使用?
:
Factory<?> f = codeToCreateFactory();
myRutine(f);
您可以像使用集合一样进行操作
不像这样:
List<Integer.class> myVarList = ...;
但
List<Integer> myVarList = ...;
所以你的情况
Generics<Sample> generics = new Generics<>();
或用于较旧的Java版本
Generics<Sample> generics = new Generics<Sample>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.