홈>
그래서
A
수업이 있습니다
클래스 A에서 확장되는 여러 클래스가 있습니다.이 클래스의 인스턴스를 만듭니다. A를 확장하는 다른 모든 클래스를 가져 오는 방법이 있습니까?
같은 것 :
A a = new A();
a.getAllSubclasses();
이 작업을 수행하는 유일한 방법은 전체 클래스의 전체 프로젝트를 스캔하여 목록에 저장 한 다음 각 클래스가 instanceOf를 사용하여 A에서 확장되는지 수동으로 확인하는 것입니다.
List<Class> classList;
classList.each{
if(it instanceOf a)
//do stuff
}
이것은 특히 수백 개의 클래스를 가진 거대한 프로젝트에서 나쁘게 보입니다.
- 답변 # 1
- 답변 # 2
서브 클래스에 대한 정보를 제공하는 org.reflections라는 간단한 라이브러리가 있습니다. 이 라이브러리를 사용하여 reflections.getSubTypesOf (ClassName))를 호출해야합니다. 여기에서 각 코드를 확인하십시오 GitHub 코드
관련 자료
- 자바 스크립트 - 문자열에서 모든 html 태그를 얻는 방법
- javascript - 시간 속성에서 지금의 시간을 어떻게 얻을 수 있습니까?
- Swift에서 json 객체의 모든 키를 얻는 방법
- css - 모든 html 구성 요소를 페이지 중앙으로 이동하려면 어떻게해야합니까?
- 파이썬 스크래피에서 텍스트 만 얻을 수있는 방법
- javascript - 컬렉션의 모든 문서 컬렉션의 모든 문서를 얻는 방법은 무엇입니까?
- r - 일주일 안에 모든 요일을 얻는 방법?
- linux - WLAN에 연결된 장치의 모든 IP를 보려면 어떻게해야합니까?
- google bigquery - 모든 값의 합계를 얻는 방법은 무엇입니까?
- c++ - C ++ 20 std lib를 어떻게 구할 수 있습니까?
- php - 다음 어레이를 어떻게 구할 수 있습니까?
- google bigquery - 이 SQL 쿼리에서 어떻게 보완을 얻을 수 있습니까?
- c# - 아랍어 형식 WPF로 모든 요일 이름을 얻는 방법은 무엇입니까?
- javascript - 이 배열의 모든 자손을 얻는 방법은 무엇입니까?
- javascript - jquery의 keyup에서 어떻게 val을 얻을 수 있습니까?
- PHP가 C #과 똑같은 입력에 서명하도록하려면 어떻게해야합니까?
- stream - Deno에서 파일 체크섬을 얻으려면 어떻게해야합니까?
- Android 스튜디오에서 사용자로부터 데이트를 받으려면 어떻게해야하나요?
- Perl의 경로에서 디렉토리를 두 단계 위로 가져 오려면 어떻게해야합니까?
- 시간을 얻고 파이썬에서 UTC로 변환하는 방법
관련 질문
- String을 java.lang.reflect.Type으로 구문 분석하는 방법은 무엇입니까?
- java : "메서드 settingName(String)이 StudentName 유형에 대해 정의되지 않았습니다" 오류가 발생하는 이유는 무엇입니까?
- 동일한 폴더의 Java 클래스에 가져오기 또는 패키지가 필요합니까?
- java : Annotation 상속 여부 확인
- java : ModelMapper PropertyMap으로 상속을 사용하는 방법
- java : 자바에서는 항상 Main 클래스가 필요합니까?
- java : 스칼라 2.9 브리지 메서드
- Java에서 루프에서 객체의 인스턴스를 자동으로 생성하는 방법은 무엇입니까?
간단한 대답은 : 예, 클래스 X의 "접근 가능한"서브 클래스에 대해 알 수있는 유일한 방법은 모든 클래스에 대해완료클래스 경로를 스캔하고 각 클래스에 대해 X의 서브 클래스입니다.
참고 : 물론만은 해당 클래스 경로의 하위 클래스에 대해 알려줍니다.
즉, 범위의 제한이 항상 있습니다. 두 개의 서로 다른 프로젝트가있는 경우 두 프로젝트 모두에서 X의 서브 클래스를 가질 수 있으므로 이러한 "컨텍스트"를 모두 스캔해야합니다.