我正在开发一个较大的 Java 类层次结构,其中一些具有我有兴趣在运行时查询的特定属性(该属性绝对仅适用于类,而不适用于特定实例)。
我可以创建一个isFooBar()
子类可以实现的抽象布尔方法来指示属性是否存在:
public abstract class MyBaseClass {
...
public abstract boolean isFooBar();
}
或者,我可以使用标记界面FooBarProperty
并对界面进行instanceof
检查:
public class MyConcreteClass extends MyBaseClass implements FooBarProperty {
...
}
或者我猜你甚至可以使用 AmitD 建议的注释:
@FooBarAnnotation
public class MyConcreteClass extends MyBaseClass {
...
}
每种方法的优缺点是什么,通常应该首选哪种方法?