ホームページ > Java > ジェネリッククラスまたはインターフェイスの実装クラスに関連してJavaのすべての実際の型を解決するにはどうすればよいですか?

ジェネリッククラスまたはインターフェイスの実装クラスに関連してJavaのすべての実際の型を解決するにはどうすればよいですか?

WBOY
リリース: 2024-02-12 18:00:08
転載
1076 人が閲覧しました

質問内容

ジェネリック クラスまたはインターフェイスに関連する実装クラスのすべての実際の型を解決しようとしています。

私はこれのために actualtypeargumentsresolver を書きましたが、これは型名が一貫している場合にのみ機能します。 typename を無視して、すべての実際の型を取得したいと考えています。 どうすればこの目標を達成できますか?

ご協力いただければ幸いです。ありがとう!

@Test
public void testIndirectlyExtendedGenericSuperclassWithDiffTypeName() {

    abstract class AbstractClass3<AAA, BBB, CCC> { }

    abstract class AbstractClass2<AA, BB, CC> extends AbstractClass3<CC, Map, BB> { }

    abstract class AbstractClass1<A, B> extends AbstractClass2<Long, A, Boolean> { }

    class Impl extends AbstractClass1<String, Integer> {}

    Type[] arr = ActualTypeArgumentsResolver.resolve(Impl.class, AbstractClass3.class);

    Assert.assertTrue(arr.length == 3);
    Assert.assertEquals(arr[0], Boolean.class);
    Assert.assertEquals(arr[1], Map.class);
    Assert.assertEquals(arr[2], String.class);
}
ログイン後にコピー

Solution

guavatypetoken はこの機能をサポートしています。 impl を表す typetokengestertype メソッドを使用して、パラメータ化されたバージョンの abstractclass3 とすべての実際の型パラメータを取得します。

65bee58535616

以上がジェネリッククラスまたはインターフェイスの実装クラスに関連してJavaのすべての実際の型を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート