public class A<T, U> implements S<T, U> {
private final T first;
private final U second;
public A(T first, U second) {
this.first = first;
this.second = second;
}
}
有没有办法从反射中调用公共构造函数?
我想做的是
classLoader.loadClass("A").getConstructor(<Something Here>).newInstance()
我可以这样做吗?
由于类型参数被擦除,而不是传入虚构的T.class
和U.class
(这没有任何意义(,你应该只传入两个Object.class
,因为这就是T
和U
擦除的内容:
A.class.getConstructor(Object.class, Object.class)
您还应该将一些参数传递给newInstance
。例如,要创建一个A<Integer, String>
,您可以执行以下操作:
A<Integer, String> a =
(A<Integer , String>)A.class.getConstructor(Object.class, Object.class)
.newInstance(1, "Hello World");
类型参数 T 和 u 在编译代码时被擦除并变得Object
。因此,请使用Object.class
来指示构造函数参数类型。
Constructor aConstructor = aClass.getConstructor(Object.class, Object.class);