注釈を使用する Java クラスが 1 つあります。それを拡張し、既存のメソッドの注釈を変更するバージョンを書きたいと思います。
したがって、次のメソッドがあります。
@myAnnotation(value=VALUE_THAT_CHANGE_IN_SUBCLASS)
myMethod(){
}
サブクラスにはいくつかの新しいメソッドがありますが、ほとんどの場合、前述の方法で注釈を変更するだけです。
注釈を使用する Java クラスが 1 つあります。それを拡張し、既存のメソッドの注釈を変更するバージョンを書きたいと思います。
したがって、次のメソッドがあります。
@myAnnotation(value=VALUE_THAT_CHANGE_IN_SUBCLASS)
myMethod(){
}
サブクラスにはいくつかの新しいメソッドがありますが、ほとんどの場合、前述の方法で注釈を変更するだけです。
なぜそうしたいのかわかりませんが、クラスを拡張し、メソッドをオーバーライドし、注釈を適用する必要があります。
public class App
{
public static void main(String[] args) throws NoSuchMethodException
{
Class<MyClass> c = MyClass.class;
MyAnnotation a = c.getMethod("someMethod",null).getAnnotation(MyAnnotation.class);
System.out.println(a.name());
Class<MySubclass> c2 = MySubclass.class;
a = c2.getMethod("someMethod",null).getAnnotation(MyAnnotation.class);
System.out.println(a.name());
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface MyAnnotation {
String name() default "";
}
class MyClass {
@MyAnnotation(name="Some value")
public String someMethod() {
return "Hi!";
}
}
class MySubclass extends MyClass {
@Override
@MyAnnotation(name="Some other value")
public String someMethod() {
return super.someMethod();
}
}
出力:
何らかの値
その他の値