2

注釈を使用する Java クラスが 1 つあります。それを拡張し、既存のメソッドの注釈を変更するバージョンを書きたいと思います。

したがって、次のメソッドがあります。

@myAnnotation(value=VALUE_THAT_CHANGE_IN_SUBCLASS)
    myMethod(){
}

サブクラスにはいくつかの新しいメソッドがありますが、ほとんどの場合、前述の方法で注釈を変更するだけです。

4

1 に答える 1

4

なぜそうしたいのかわかりませんが、クラスを拡張し、メソッドをオーバーライドし、注釈を適用する必要があります。

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();
    }
}

出力:

何らかの値
その他の値

于 2013-02-12T21:05:16.543 に答える