ホームページ  >  記事  >  Java  >  実行時にJavaのジェネリック型のクラスを決定するにはどうすればよいですか?

実行時にJavaのジェネリック型のクラスを決定するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-12 07:39:02723ブラウズ

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 が不明なため、不正なクラス リテラル エラーが発生しました。これに対処するには、回避策が必要です。

回避策

効果的な回避策の 1 つは、型を静的メソッドにパラメータとして渡し、クラス情報をジェネリック クラスに提供することです。以下に例を示します。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。