当实例化名为Class
的新模板类时,是否可以通过传递TemplateClass
变量,还是绝对没有意义?
我想做的但不能编译的示例:
final List<TemplateClass> fields = new ArrayList<>();
public void loadDataFields() {
for(Field x : ClassA.class.getDeclaredFields()) {
fields.add(new TemplateClass<x.getClass()>());
}
}
这里是TemplateClass
:
public class TemplateClass<T extends Comparable> {
int count;
T min;
T max;
}
答案 0 :(得分:3)
在Java中,由于Type Erasure,泛型被视为(主要是)编译时间信息。
第new TemplateClass<x.getClass()>()
行没有意义,因为x.getClass()
仅在运行时评估。这行会导致编译错误。
答案 1 :(得分:2)
您无法在运行时将Type
分配为通用类。
泛型只能在编译时使用。
答案 2 :(得分:2)
简而言之-不。
无法在运行时使用动态类实例化模板。那是因为模板是在构建时评估的。