Java.util.List의 일반 유형 검색
Java에서 일반 유형 매개변수를 사용하면 클래스 또는 인터페이스가 작동할 수 있습니다. 다양한 유형의 데이터. 예를 들어 List는 모든 유형의 요소를 저장할 수 있습니다. 목록의 일반 유형에 액세스하려면 Java Reflection을 활용할 수 있습니다.
Reflection을 사용하여 일반 유형 얻기
Field 클래스의 getGenericType() 메서드는 다음을 반환합니다. 필드의 일반 유형입니다. 목록 필드의 경우 이는 ParameterizedType입니다. 실제 일반 유형을 추출하려면 ParameterizedType을 목록 유형으로 캐스팅하세요.
다음 코드는 리플렉션을 사용하여 목록의 일반 유형을 검색하는 방법을 보여줍니다.
import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.util.ArrayList; import java.util.List; public class GetGenericType { List<String> stringList = new ArrayList<>(); List<Integer> integerList = new ArrayList<>(); public static void main(String[] args) throws Exception { Class<GetGenericType> clazz = GetGenericType.class; Field stringListField = clazz.getDeclaredField("stringList"); ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType(); Class<?> stringListClass = stringListType.getActualTypeArguments()[0]; System.out.println(stringListClass); // class java.lang.String Field integerListField = clazz.getDeclaredField("integerList"); ParameterizedType integerListType = (ParameterizedType) integerListField.getGenericType(); Class<?> integerListClass = integerListType.getActualTypeArguments()[0]; System.out.println(integerListClass); // class java.lang.Integer } }
여기서 예를 들어, getGenericType() 메소드는 ParameterizedType의 인스턴스인 stringList 및 정수 목록 필드의 일반 유형을 검색하는 데 사용됩니다. 이러한 유형의 getActualTypeArguments() 메서드에 액세스하면 각각 String 및 Integer로 인쇄되는 실제 일반 유형이 반환됩니다.
리플렉션은 비용이 많이 들 수 있으므로 필요한 경우에만 사용해야 한다는 점에 유의하는 것이 중요합니다. 코드 컨텍스트에서 stringList 및 정수 목록의 일반 유형이 이미 알려져 있거나 현재 범위에서 추론할 수 있는 경우 리플렉션을 사용할 필요가 없습니다. 그러나 리플렉션은 동적으로 생성되거나 컴파일 시 알 수 없는 일반 유형으로 작업할 때 유용할 수 있습니다.
위 내용은 리플렉션을 사용하여 Java `목록`의 일반 유형을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!