gpt4 book ai didi

以动态方式提供的 Java 注释值

转载 作者:IT老高 更新时间:2023-10-28 20:41:18 25 4
gpt4 key购买 nike

我想为一些方法生成的一些值提供注解。

到目前为止我已经试过了:

public @interface MyInterface {
String aString();
}

@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)
public class MyClass {

static final String GENERIC_GENERATED_NAME = MyClass.generateName(MyClass.class);

public static final String generateName(final Class<?> c) {
return c.getClass().getName();
}
}

以为 GENERIC_GENERATED_NAMEstatic final,它提示说

The value for annotation attribute MyInterface.aString must be a constant expression

那么如何实现呢?

最佳答案

无法动态生成注释中使用的字符串。编译器在编译时评估 RetentionPolicy.RUNTIME 注释的注释元数据,但 GENERIC_GENERATED_NAME 直到运行时才知道。并且您不能将生成的值用于 RetentionPolicy.SOURCE 的注释,因为它们在编译后被丢弃,因此这些生成的值将永远不为人知。

关于以动态方式提供的 Java 注释值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10636201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com