我正在嘗試解析與泛型類別或介面相關的實作類別的所有實際類型。
我為此編寫了一個actualtypeargumentsresolver
,但它僅在typename保持一致時才有效。我想忽略 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); }
guava 的 typetoken
支援此功能。在代表 impl
的 typetoken
上使用 getsupertype
方法來取得 abstractclass3
的參數化版本以及所有實際類型參數。
以上是如何解析java中相對於泛型類別或介面的實作類別的所有實際類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!