私は 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 {
...
}
各方法の長所と短所は何ですか。また、通常はどちらを優先する必要がありますか?