2017-10-20 86 views
-1

这可能吗?更改方法注释的值(属性) - JAVA

我想换一个注解的值,是这样的:

方法(Listener.class(接口)):

@xAnnotation(x=15) 
public final void xMethod() { 
} 

代码:

public final void xMethod1(Listener lnr) { 
    if (boolean_) { 
     changeXvalue(lnr, 20); // This should change the x value. 
    } 
    registerListeners(lnr); // Listeners will be registered according the 'x' value. 
    } 
+0

欢迎来到SO。本网站不是代码编写服务,不适用于提供完整的解决方案。预计用户将展示一些努力和代码,而SO在此期间将帮助您解决具体的编程问题。你有没有尝试过任何东西?请阅读:https://stackoverflow.com/help/asking –

+0

@Maciej Jureczko - 谢谢你的-1 –

+0

你甚至*尝试*自己寻找答案吗?我使用网络搜索引擎在5秒内找到多个链接。 –

回答

0

更改注解值不正式支持。请注意,根据Retention,注释在运行时可能甚至不存在。如果是的话,它们会在类级别编译为字节码并且是不可变的。

作为一种解决方法,您可以创建静态getter/setter并将其初始化为类的静态初始值设定项中的属性值。

+0

我正在使用一个库,根据x值在Collections类中添加Listener.class。低值将首先超过高。 –

+0

在这种情况下,您可以通过继承Listener类并重新定义其注释值来解决问题。 – jurez

+0

我试着注解设置一个常量值的值(private static final int value = boolean_:15?20),但这是不可能的 –