> Java > java지도 시간 > Java Reflection을 사용하여 일반 유형 정보를 검색하려면 어떻게 해야 합니까?

Java Reflection을 사용하여 일반 유형 정보를 검색하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-16 00:27:11
원래의
817명이 탐색했습니다.

How Can I Retrieve Generic Type Information Using Java Reflection?

리플렉션을 사용하여 Java의 일반 매개변수 입력 이해

리플렉션을 통해 Java의 일반 매개변수 유형을 식별하는 것은 코드 분석에서 유용한 기술이 될 수 있습니다. 그리고 조작. 이 글에서는 일반 유형 매개변수와 관련된 실제 클래스를 검색하는 것과 관련된 과제와 해결 방법을 자세히 살펴보겠습니다.

과제: 일반 유형 정보 검색

다음 코드 조각을 고려하세요.

public final class Voodoo {
    public static void chill(List<?> aListWithTypeSpiderMan) {
        // Here we aim to obtain the Class object for 'SpiderMan'
        Class<?> typeOfTheList = ???;
    }

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

우리의 목표는 일반 매개변수의 유형을 결정하는 것입니다. 냉각 방법 내에서. 특히 SpiderMan 클래스를 추출하려고 합니다.

해결책: 리플렉션 메커니즘 활용

Java의 리플렉션 기능은 런타임 시 클래스 및 메서드 정보에 액세스하고 조작하기 위한 메커니즘을 제공합니다. . 일반 매개변수의 유형을 알아내기 위해 다음 접근 방식을 사용할 수 있습니다.

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

이 코드는 다음 기술을 활용합니다.

  • getClass(): 현재 클래스를 나타내는 클래스 객체를 얻습니다(여기서 Voodoo case).
  • getGenericSuperclass(): 현재 클래스의 일반 슈퍼클래스를 가져옵니다(유형 매개변수를 사용하여 다른 클래스를 확장함).
  • getActualTypeArguments(): 제네릭에 전달된 실제 유형 인수의 배열을 검색합니다. superclass.
  • Cast to Class: 획득한 유형 인수(Type의 인스턴스)를 Class 객체로 변환합니다.

참고

제공된 코드 조각에서는 현재 클래스가 (Voodoo)는 유형 매개변수를 선언하는 슈퍼클래스를 확장합니다. 그렇지 않은 경우 반영 코드를 적절하게 조정하려면 조정이 필요합니다.

위 내용은 Java Reflection을 사용하여 일반 유형 정보를 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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