Java 反射泛型 - 通过在编译时传递参数进行转换?

标签 java generics reflection instantiation

有以下情况:
给出了一个类,其中有一个通用字段。是否可以在运行时使用 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/

相关文章:

c# - 使用相同方法自定义用户控件,以相同的方式调用它们

.net - 我可以使用 LINQ 表达式参数化 PropertyExpression 的属性名称吗?

java - 如何使用 JMenu 项在 JTextArea 中的单独行上显示整数?

java - 在android studio中获取连接被拒绝(连接被拒绝)

java - 使用 Predicate 和 Criteria API 进行不区分大小写的搜索

C# 通用事件处理 - 链接/代理

c# - 为什么 IEnumerable<T> 不实现 Add(T)?

scala 类使用泛型扩展特征,泛型是字段的一种类型

java - 从 C++ 生成 JNI Bridge 和 Java 接口(interface)

c# - 在 C# 中动态设置属性类型