제네릭 클래스나 인터페이스와 관련된 구현 클래스의 실제 유형을 모두 구문 분석하려고 합니다.
나는 이것을 위해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!