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

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

WBOY
WBOY앞으로
2024-02-12 18:00:081063검색

질문 내용

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

나는 이것을 위해 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으로 문의하시기 바랍니다. 삭제
이전 기사:다중 계약 연장다음 기사:다중 계약 연장