> Java > 일반 클래스 또는 인터페이스의 구현 클래스와 관련하여 Java의 모든 실제 유형을 해결하는 방법은 무엇입니까?

일반 클래스 또는 인터페이스의 구현 클래스와 관련하여 Java의 모든 실제 유형을 해결하는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-02-12 18:00:08
앞으로
1093명이 탐색했습니다.

질문 내용

제네릭 클래스나 인터페이스와 관련된 구현 클래스의 실제 유형을 모두 구문 분석하려고 합니다.

나는 이것을 위해 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 支持此功能。在代表 impltypetoken 上使用 getsupertype 方法来获取 abstractclass3의 매개변수화된 버전입니다.

65비58535616

위 내용은 일반 클래스 또는 인터페이스의 구현 클래스와 관련하여 Java의 모든 실제 유형을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿