Java에서 프로그래밍 방식으로 인터페이스 구현 쿼리
인터페이스를 구현하는 클래스 목록을 검색하는 것은 어려울 수 있습니다. 다행스럽게도 Java는 이 쿼리를 해결하기 위한 여러 가지 접근 방식을 제공합니다.
Reflections 라이브러리 사용:
Reflections는 개발자가 클래스에 대한 메타데이터를 검사하고 조작할 수 있는 인기 있는 라이브러리입니다. 패키지. Reflections를 사용하면 특정 인터페이스를 구현하는 하위 클래스 목록을 얻을 수 있습니다.
Reflections reflections = new Reflections("my.package"); Set<Class<? extends Pet>> classes = reflections.getSubTypesOf(Pet.class);
ServiceLoader 활용:
ServiceLoader는 호환 가능한 구현을 검색하기 위한 플랫폼 독립적인 메커니즘을 제공합니다. 서비스 제공자 인터페이스의 모습입니다. 이 접근 방식을 사용하려면 인터페이스를 서비스 공급자 인터페이스로 정의하고 해당 구현을 선언해야 합니다. 이 인프라를 설정한 후 다음과 같이 구현을 얻을 수 있습니다.
ServiceLoader<Pet> loader = ServiceLoader.load(Pet.class); for (Pet implClass : loader) { System.out.println(implClass.getClass().getSimpleName()); }
패키지 수준 주석 사용:
패키지 수준 주석은 주석을 달 수 있는 방법을 제공합니다. 메타데이터가 포함된 패키지. 이 기능을 이용하면 패키지에 포함된 클래스에 대한 정보로 패키지에 태그를 지정할 수 있습니다. 이 접근 방식을 활용하려면:
구현 클래스를 식별하기 위해 사용자 정의 주석을 정의합니다.
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PACKAGE) public @interface MyPackageAnnotation { Class<?>[] implementationsOfPet() default {}; }
다음의 적절한 패키지에 주석을 적용합니다. 소스 코드:
@MyPackageAnnotation(implementationsOfPet = {Dog.class, Cat.class}) package my.package;
쿼리 구현 클래스:
Package[] packages = Package.getPackages(); for (Package p : packages) { MyPackageAnnotation annotation = p.getAnnotation(MyPackageAnnotation.class); if (annotation != null) { Class<?>[] implementations = annotation.implementationsOfPet(); System.out.println("Found implementation: " + implementations[0].getSimpleName()); } }
이러한 기술은 지정된 인터페이스를 구현하는 클래스 목록을 얻는 유연성을 제공합니다.
위 내용은 Java에서 특정 인터페이스를 구현하는 클래스를 프로그래밍 방식으로 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!