> Java > java지도 시간 > Java Reflection이 런타임에 일반 매개변수 유형을 검색할 수 있습니까?

Java Reflection이 런타임에 일반 매개변수 유형을 검색할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-12-17 17:54:10
원래의
578명이 탐색했습니다.

Can Java Reflection Retrieve Generic Parameter Types at Runtime?

Java Reflection을 통해 일반 매개변수 유형 검색

Java에서 개발자는 런타임 시 특정 유형의 일반 매개변수를 가져와야 할 수도 있습니다. . 이 질문은 Java 리플렉션을 사용하여 이 일반적인 작업을 수행하는 방법을 탐구합니다.

질문:

Java 리플렉션을 사용하여 특정 유형의 일반 매개변수를 검색할 수 있습니까?

시나리오:

다음 코드를 고려하세요. snippet:

public final class Voodoo {
    public static void chill(List<?> aListWithTypeSpiderMan) {
        // Here I'd like to get the Class-Object 'SpiderMan'
        Class typeOfTheList = ???;
    }

    public static void main(String... args) {
        chill(new ArrayList<SpiderMan>());
    }
}
로그인 후 복사

답변:

예, 리플렉션을 사용하여 일반 매개변수 유형을 얻는 것이 가능합니다. 한 가지 접근 방식은 다음 코드를 활용하는 것입니다.

Class<T> persistentClass = (Class<T>)
   ((ParameterizedType)getClass().getGenericSuperclass())
      .getActualTypeArguments()[0];
로그인 후 복사

이 코드에서 persistClass는 일반 유형(이 경우 SpiderMan)의 실제 유형 인수를 나타냅니다. 그러나 기본 리플렉션 메커니즘은 복잡할 수 있으므로 성공적인 구현을 위해서는 Java 제네릭 및 리플렉션에 대한 철저한 이해가 권장됩니다.

위 내용은 Java Reflection이 런타임에 일반 매개변수 유형을 검색할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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