簡體   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