런타임에 특정 기본 클래스에서 상속되는 Java 애플리케이션 내의 모든 클래스를 찾아야 할 수도 있습니다. 이는 기존 코드를 수정하지 않고 동적 클래스 로딩을 구현하거나 기능을 추가하는 데 유용할 수 있습니다.
Java에서는 런타임 시 애플리케이션의 클래스 경로에서 사용 가능한 모든 클래스 목록을 검색하는 것이 간단하지 않습니다. 그러나 이 작업을 용이하게 할 수 있는 라이브러리가 있습니다.
그러한 라이브러리 중 하나가 org.reflections입니다. 이 라이브러리는 패키지를 검색하고 클래스를 검색하는 방법을 제공합니다. org.reflections를 사용하면 특정 기본 클래스를 확장하는 클래스 세트를 얻을 수 있습니다.
Reflections reflections = new Reflections("com.mycompany"); Set<Class<? extends MyInterface>> classes = reflections.getSubTypesOf(MyInterface.class);
이 코드는 "com.mycompany" 패키지를 재귀적으로 검색하여 "MyInterface" 인터페이스를 구현하는 클래스를 찾습니다. . 그런 다음 결과 클래스 세트를 반복하고 필요에 따라 객체를 인스턴스화할 수 있습니다.
이 목적을 위한 또 다른 주목할만한 라이브러리는 ClassGraph입니다. 이는 클래스를 검색하기 위해 다른 접근 방식을 사용하여 클래스 경로를 쿼리하고 검사하기 위한 포괄적인 API를 제공합니다. ClassGraph를 사용하면 다음 코드를 사용하여 기본 클래스를 확장하는 클래스 목록을 얻을 수 있습니다.
ClassGraph classGraph = new ClassGraph(); ClassInfoList classInfos = classGraph.getSubclasses(BaseClass.class);
ClassGraph는 jar 파일 및 클래스 로더를 포함하여 클래스 경로를 철저하게 검사합니다. 주석이나 메소드 존재 여부에 따른 필터링과 같은 추가 기능을 제공합니다.
이러한 라이브러리는 런타임 시 하위 클래스를 동적으로 로드하고 인스턴스화하는 편리한 방법을 제공합니다. 클래스 목록을 하드코딩하지 않으면 기본 클래스나 애플리케이션 코드를 변경하지 않고도 기능을 쉽게 추가하거나 제거할 수 있습니다.
위 내용은 Java 런타임 시 기본 클래스의 모든 하위 클래스를 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!