java - 如何扩展 Java 类并更改注释?

标签 java inheritance annotations

我有一个使用注释的 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();
    }
}

输出:

Some value
Some other value

关于java - 如何扩展 Java 类并更改注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14840893/

相关文章:

java - 在 JavaFX 中实现标签栏

java - 解析 XML 并填充到 Map 中

java - 如何在java中的const变量中保存Date对象

c# - 继承:为什么改变一个对象的类型被认为是糟糕的设计?

python - 是否可以通过 doctest 测试使用 get_type_hints 的函数?

java - 如何在注释中使用数组常量

java - 使用 Android 从 URL 获取 JSON 数据响应?

java - 捕获 Java Hashmap 中的错误条件

iOS 对多个 ViewController 使用相同的 xib

spring - 将 Spring @Value 注释评估为原始 bool 值