Java 애플리케이션에서 하위 클래스를 동적으로 식별
Java 프로그램은 느슨하게 연합된 .class 파일을 사용합니다. 이로 인해 런타임 시 기본 클래스를 확장하는 모든 하위 클래스를 동적으로 식별하는 것이 어려워집니다. 그러나 이러한 제한을 완화할 수 있는 메커니즘이 있습니다.
org.reflections 라이브러리
org.reflections 라이브러리는 런타임 시 하위 클래스를 검색하기 위한 강력한 솔루션을 제공합니다. 클래스와 그 관계를 조사하기 위해 주석과 리플렉션을 활용합니다. 다음 코드 조각은 그 사용법을 보여줍니다.
Reflections reflections = new Reflections("com.mycompany"); Set<Class<? extends MyInterface>> classes = reflections.getSubTypesOf(MyInterface.class);
여기서 "com.mycompany"는 클래스를 검색하는 패키지입니다. 이 코드는 지정된 패키지 내에서 MyInterface의 모든 하위 유형을 캡처합니다.
사용 예
예를 들어 다음 코드를 고려하세요.
public static void main(String[] args) throws IllegalAccessException, InstantiationException { Reflections reflections = new Reflections("java.util"); Set<Class<? extends List>> classes = reflections.getSubTypesOf(java.util.List.class); for (Class<? extends List> aClass : classes) { System.out.println(aClass.getName()); if(aClass == ArrayList.class) { List list = aClass.newInstance(); list.add("test"); System.out.println(list.getClass().getName() + ": " + list.size()); } } }
이것은 코드는 java.util 패키지에 있는 List의 모든 하위 유형을 반복합니다. 특히 ArrayList를 식별하고 리플렉션을 통해 인스턴스를 생성하는 기능을 보여줍니다. 출력에는 다음이 포함됩니다.
java.util.LinkedList java.util.AbstractSequentialList java.util.Vector java.util.ArrayList: 1
위 내용은 런타임 시 Java 기본 클래스의 모든 하위 클래스를 어떻게 동적으로 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!