>Java >java지도 시간 >런타임 시 Java 기본 클래스의 모든 하위 클래스를 어떻게 동적으로 찾을 수 있습니까?

런타임 시 Java 기본 클래스의 모든 하위 클래스를 어떻게 동적으로 찾을 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-26 03:50:11134검색

How Can I Dynamically Find All Subclasses of a Base Class in Java at Runtime?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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