首頁 > Java > java教程 > 主體

如何在運行時確定Java中泛型類型的類別?

Susan Sarandon
發布: 2024-11-12 07:39:02
原創
677 人瀏覽過

How to Determine the Class of a Generic Type in Java at Runtime?

確定Java 中泛型類型的類別

在Java 中,處理泛型類別時,通常需要確定泛型類型所持有的具體類型運行時。然而,泛型類型資訊在編譯過程中會被刪除,這使得直接存取它成為一個挑戰。

讓我們考慮一個例子:

public class MyGenericClass<T> {

  public void doSomething() {
    T instance = (T) thirdPartyLib.create(T.class);
  }
}
登入後複製

在這種情況下,T.class 將產生一個由於泛型類型 T 未知,因此出現非法類文字錯誤。為了解決這個問題,需要一種解決方法。

解決方案

一種有效的解決方法是將類型作為參數傳遞給靜態方法,該方法將向泛型類別提供類別資訊。以下是一個範例:

public class MyGenericClass<T> {

  private final Class<T> type;

  public static <U> MyGenericClass<U> createWithClass(Class<U> type) {
    return new MyGenericClass<>(type);
  }

  private MyGenericClass(Class<T> type) {
    this.type = type;
  }

  public void doSomething() {
    T instance = type.newInstance();
  }
}
登入後複製

此方法可讓您明確傳遞類別類型,確保泛型類別可以存取必要的資訊。雖然此解決方法可能不是最優雅的解決方案,但它提供了一種可靠的方法來在運行時確定泛型類型的類別。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板