我将这两个类作为例子:
public class AClass {
public int i;
public static int static_i;
public AClass(int i) {
}
public void aMethod() {}
public static void aStaticMethod() {}
public static AClass getInstance(int i) {
return new AClass(i);
}
}
和
public class AnOtherClass<T extends AClass> {
T aMember;
public void method() {
// Instanciation of T failed
aMember = new T(0);
// Instanciation via getInstance static method failed
aMember = T.getInstance(0);
// OK
T.aStaticMethod();
// OK
aMember.aMethod();
}
}
答案 0 :(得分:4)
您无法实例化通用。记住 - 您可以创建一个AnOtherClass<MyAbstractClass>
[其中MyAbstractClass
是一个扩展AClass
的抽象类,当您尝试实例化它时会发生什么?
但是 - 调用已存在的类/实例的方法没有问题。
您可能需要将T
传递给method()
并使用reflection创建实例,以便在您仍想创建对象或使用factory design pattern时解决该问题。