使用自定义注释从抽象类调用特定的子方法



我有一个包含run()方法的抽象类和几个子类用不同的实现覆盖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");
}
}

因此,具有抽象类和注释值"一"和"二",我可以在不使用子类名的情况下为每个子类调用 run 方法。

我们可以使用ClassPathScanningCandidateComponentProviderspring 库来列出所有使用特定类型注释的类。这里的注释可以是自定义的,也可以是默认的。因此,在扩展该抽象类的所有子类上放置注释只能提供这些子类的列表。这解决了我的问题。

最新更新