在 Java 中,如果我有:
public class Foo<T> {
public Foo() { }
}
我可以Foo<Integer> foo = new Foo<Integer>();
但我找不到使用 class
的等效语法字段,意思是类似 Foo<Integer> foo = Foo<Integer>.class.newInstance();
不起作用。有没有办法通过 newInstance 方法使用泛型?
最佳答案
只有在没有参数化类型的情况下才可以做到这一点。 Class.newInstance() 不太值得推荐。你可以这样做:
//Class<Foo<Integer>> clazz = Foo<Integer>.class; <-- Error
Class<Foo> clazz = Foo.class; // <-- Ok
Foo instance = clazz.getConstructor().newInstance();
Why is Class.newInstance() evil?
希望有帮助。
关于类和新实例的 Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31287764/