我正在开发一个较大的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 {
...
}
每种方法的利弊是什么,通常应该选择哪种方法?
这段话的主要意思是在询问针对某种技术的不同方案所存在的优缺点,以及通常情况下应该选择哪种方案。