有以下情况:
给出了一个类,其中有一个通用字段。是否可以在运行时使用 T
的实例实例化该字段?
class Root<T>{
T var;
Root(){
//instantiate var with an instance of T here
}
}
最佳答案
如果你有一个扩展 Root<T>
的类并在其 extends
中设置类型参数子句,然后可以使用 getGenericSuperclass() 将其挖掘出来.例如Guice uses this approach为注入(inject)类提供类型参数信息。
否则,最好的办法是传递 Class<T>
实例作为构造函数参数并使用它。这也将导致更简单的代码,尽管类的每个实例化的样板文件更多一些。
关于Java 反射泛型 - 通过在编译时传递参数进行转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6565530/