首頁 >Java >java教程 >如何確定泛型類別中泛型類型的類別?

如何確定泛型類別中泛型類型的類別?

Barbara Streisand
Barbara Streisand原創
2024-11-11 12:43:02889瀏覽

How to Determine the Class of a Generic Type in Generic Classes?

泛型類別中的泛型類型類別決定

在物件導向程式設計中,決定泛型類型的類別通常是必要的。但是,當使用泛型類別時,由於執行時的類型擦除,此任務變得具有挑戰性。

考慮以下範例,其中 MyGenericClass 嘗試使用第三方函式庫建立型別 T 的實例:

public class MyGenericClass<T> {
  public void doSomething() {
    // Create an instance of class T
    T bean = (T)someObject.create(T.class);
  }
}

此方法失敗,並出現「型別參數 T 的類文字非法」錯誤。為了解決這個問題,一個常見的解決方法是將類型 T 作為參數傳遞給靜態方法:

public class MyGenericClass<T> {

    private final Class<T> clazz;

    public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) {
        return new MyGenericClass<U>(clazz);
    }

    protected MyGenericClass(Class<T> clazz) {
        this.clazz = clazz;
    }

    public void doSomething() {
        // Create an instance of class T
        T instance = clazz.newInstance();
    }
}

透過明確傳遞類別 T,程式碼可以成功建立所需類型的實例。雖然這種方法不如直接方法呼叫那麼優雅,但它為確定泛型類型的類別提供了可靠的解決方案。

以上是如何確定泛型類別中泛型類型的類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn