英文:
Java annotation, Attribute value must be constant
问题
我在Java中看到,当我将注解用于一个方法,就像这样是不可能的。它会给出"属性必须是常量"的错误。
private static final String CONSTANT = MyClass.class.getCanonicalName();
@Timed(CONSTANT) //属性值必须是常量
@CircuitBreaker(name = CONSTANT) //属性值必须是常量
public String something(String something) {
强调一下,我在这里使用@Timed和@CircuitBreaker只是作为示例。许多其他注解也会产生完全相同的问题。
在Java中如何做呢?我的意思是,我不想在这里像这样硬编码值。
@Timed("MyClass") @CircuitBreaker(name = "MyClass")
英文:
I see in Java when I use annotation to a method like this is not possible. It gives "Attribute must be a constant"
private static final String CONSTANT = MyClass.class.getCanonicalName();
@Timed(CONSTANT) //Attribute value must be constant
@CircuitBreaker(name = CONSTANT) //Attribute value must be constant
public String something( String something ) {
To emphasize, I am using @Timed and @CircuitBreaker here as example. Many other annotations will yield the exact same issue.
How to do it in Java? I mean, I do not want to hardcode the value here like such.
@Timed("MyClass") @CircuitBreaker(name = "MyClass")
答案1
得分: 4
私有的静态的最终的 字符串 常量 = MyClass.class.getCanonicalName();
这些是修饰符:`私有的 静态的 最终的`
这是数据类型/对象类型:`字符串`
这是您的常量/变量/对象的名称:`常量`
这是初始化程序:`=`
这是属性:`MyClass.class.getCanonicalName();`
您的属性不是常量,因此您不能初始化您的常量 `常量`。
英文:
private static final String CONSTANT = MyClass.class.getCanonicalName();
These are the modifiers: private static final
This is the data-type/object-type: String
This is the name of your constant/variable/object: CONSTANT
This is the initiator: =
This is the attribute: MyClass.class.getCanonicalName();
Your attribute is not a constant, hence you can't initiate your constant CONSTANT
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论