繁体   English   中英

泛型类型的实例化?

[英]Instantiation of a generic type?

我以这两个类为例:

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();
    }
}
  1. T的实例化失败:“无法实例化类型T”
  2. 通过getInstance静态方法实例化失败:“类型不匹配:无法从AClass转换为T”
  3. 为什么不? 我不明白您为什么不能这样做。
  4. 由于T是AClass的子类,为什么不能将AClass转换为T?

您不能实例化泛型。 记住-您可以创建AnOtherClass<MyAbstractClass> [其中MyAbstractClass是扩展AClass的抽象类],然后尝试实例化它会发生什么?

但是,调用已经存在的类/实例的方法没有问题。

如果仍然要创建对象或使用工厂设计模式 ,则可能需要将T传递给method()并使用反射创建实例来解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM