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

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

Mary-Kate Olsen
풀어 주다: 2024-12-07 21:41:13
원래의
522명이 탐색했습니다.

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

Java에서 런타임에 기본 클래스를 확장하는 클래스 찾기

런타임에 특정 기본 클래스에서 상속되는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿