>Java >java지도 시간 >리플렉션을 사용하여 Java `목록`의 일반 유형을 얻는 방법은 무엇입니까?

리플렉션을 사용하여 Java `목록`의 일반 유형을 얻는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-16 15:05:15298검색

How to Get the Generic Type of a Java `List` Using Reflection?

java.util.List의 일반 유형을 얻는 방법

다음 코드를 고려하세요.

List<String> stringList = new ArrayList<String>();
List<Integer> integerList = new ArrayList<Integer>();

A 자주 묻는 질문은 다음과 같습니다. 일반 유형을 검색하는 간편한 방법이 있습니까? 목록?

리플렉션 사용

이 목록이 특정 클래스의 필드인 경우 리플렉션을 활용하여 일반 유형에 액세스할 수 있습니다.

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;

public class Test {

    List<String> stringList = new ArrayList<>();
    List<Integer> integerList = new ArrayList<>();

    public static void main(String... args) throws Exception {
        Class<Test> testClass = Test.class;

        Field stringListField = testClass.getDeclaredField("stringList");
        ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
        Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];
        System.out.println(stringListClass); // class java.lang.String

        Field integerListField = testClass.getDeclaredField("integerList");
        ParameterizedType integerListType = (ParameterizedType) integerListField.getGenericType();
        Class<?> integerListClass = (Class<?>) integerListType.getActualTypeArguments()[0];
        System.out.println(integerListClass); // class java.lang.Integer
    }
}

대안 접근법

  • 매개변수 유형과 메소드의 반환 유형에 대해 리플렉션을 사용할 수도 있습니다.
  • 단, 목록이 해당 클래스/메서드의 동일한 범위 내에 있는 경우 이미 명시적으로 선언되었으므로 중복되는 제네릭 유형이 필요합니다.

위 내용은 리플렉션을 사용하여 Java `목록`의 일반 유형을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.