run() 메서드를 포함하는 추상 클래스와 다른 구현 클래스로 run 메서드를 재정의하는 자식 클래스가 거의 없습니다. 커스텀 어노테이션 클래스도 있습니다. 각각의 자식 클래스는이 애노테이션을 각 자식 클래스를 구별하는 다른 값으로 가지고 있습니다. 자식 클래스 이름을 사용하지 않고 이러한 주석을 사용하여 추상 클래스 객체에서 각 하위 클래스에 대해이 실행 메소드를 호출했습니다. 가능하거나 다른 방법으로이 작업을 수행 할 수 있습니까?커스텀 어노테이션을 사용하여 추상 클래스에서 특정 자식 메서드 호출하기
코드는 여기 -------
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CustomAnno {
public String name();
}
public abstract class AbstractClass {
abstract void run();
}
@CustomAnno(name="one")
public class ExtendingClassOne extends AbstractClass {
@Override
void run() {
System.out.println("class one extending");
}
}
@CustomAnno(name="two")
public class ExtendingClassTwo extends AbstractClass {
@Override
void run() {
System.out.println("class two extending");
}
}
그래서 자식 클래스 이름을 사용하지 않고 각 자식 클래스의 방법을 실행 호출 할 수 있습니다, "하나"와 "이"추상 클래스와 주석 값을 갖는 .
귀하의 질문을 완전히 이해하지 못했습니다. 그러나 당신은 이것과 같은 것을 기대합니까? 'AbstractClass child1 = \\ ExtendingClassOne의 인스턴스; child1.run(); AbstractClass child2 = \\ ExtendingClassTwo의 인스턴스; child2.run();'예제를 제공 할 수 있습니까? – prasanth
답장을 보내 주셔서 감사합니다. 여기 자식 클래스의 run 메소드를 호출하기 위해 우리는 그것의 Object로 초기화해야한다. 주석과 Abstract 클래스만을 사용하여 하위 클래스를 호출하려고합니다. 우리는 런타임에 모든 주석을 하위 클래스와 함께로드 할 수 있습니다. 너 지금 받았니? –
예. 내가 이해할 수. – prasanth