我有一个使用注释的 Java 类。我想编写一个扩展它并更改现有方法的注释的版本。
所以会有一个方法:
@myAnnotation(value=VALUE_THAT_CHANGE_IN_SUBCLASS)
myMethod(){
}
子类将有几个新方法,但主要只是按照我所说的方式更改注释。
我有一个使用注释的 Java 类。我想编写一个扩展它并更改现有方法的注释的版本。
所以会有一个方法:
@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();
}
}
输出:
一些价值
一些其他价值