存在以下情况:
给定一个类,其中包含一个通用字段。是否可以在运行时使用T实例实例化字段?

class Root<T>{
   T var;

   Root(){
     //instantiate var with an instance of T here
   }
}

最佳答案

如果您有一个扩展Root<T>并在其extends子句中设置type参数的类,则可以使用getGenericSuperclass()对其进行挖掘。例如,Guice uses this approach为注入的类提供类型参数信息。

否则,最好的选择是传递Class<T>实例作为构造函数参数并使用它。这也将导致代码更简单,尽管该类的每个实例都需要更多样板。

关于java - Java反射泛型-通过在编译时传递参数进行转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6565530/

10-11 22:10
查看更多