我有一个包含run()方法的抽象类,并且有一些子类覆盖了具有不同实现的run方法。还有一个自定义注释类,每个子类都有这个带有不同值的注释来区分每个子类。我是使用这些注释从抽象类对象为每个子类调用此run方法,而不使用子类名。是否有可能或有其他方法可以做到这一点?
CODE就在这里-------
@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");
}
}
因此,如果抽象类和注释值为“one”和“two”,我可以为每个子类调用run方法而不使用子类名。
答案 0 :(得分:2)
我们可以使用ClassPathScanningCandidateComponentProvider
spring库列出使用特定类型注释的所有类。这里的注释可以是自定义的,也可以是默认的。因此,在扩展该抽象类的所有子类上添加注释只能给出那些子类的列表。这解决了我的问题。