当前位置: 首页 > 知识库问答 >
问题:

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

归浩博
2023-03-14

我想提供带有一些方法生成的一些值的注释。

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

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();
    }
}

共有1个答案

黄隐水
2023-03-14

没有办法动态生成注释中使用的字符串。编译器在编译时计算RetentionPolicy.Runtime批注的批注元数据,但Generic_Generated_Name直到运行时才知道。您不能将生成的值用于RetentionPolicy.Source注释,因为它们在编译时被丢弃,因此这些生成的值永远不会被知道。

 类似资料:
  • 我有一个模型,其中有一个@列(nullable=false)注释HiberNate和所有字段有nullable=false,我想以编程方式添加一些新的注释,如@NotNull和@ApiModelProperty(必需=true)-用于招摇过市。 所以,我希望能够从我的应用程序的模型中解析所有字段,获得现有的注释,并在此基础上添加新的注释。这能做到吗? 更新:问题是每次添加一个新字段,如果它不能为空

  • 问题内容: 我认为这在Java中可能无法实现,因为注释及其参数在编译时已解决。我有一个如下的界面, 和另一类, 我用注解标记了许多类,我想知道是否可以避免在每个注解中指定字符串,而宁愿使用 但是,这会产生诸如注释值之类的编译错误,应该将其作为数组初始化程序等。有人知道我如何使用String常量或String []常量为注释提供值吗? 问题答案: 15.28。常数表达式 编译时常量表达式是表示原始类

  • 我是新来的,用匕首。所以,我不能解决这个有什么问题。我只想问在这里解决它。 这是错误: c:\ Users \ MSI \ Documents \ MyAndroidProjects \ movie projects \ App \ build \ generated \ hilt \ component _ sources \ debug \ com \ example \ movie App

  • 有没有办法动态设置@JsonProperty注释,例如: 或者我可以简单地重命名实例的字段吗?如果是这样,请给我一个主意。此外,可以以何种方式与序列化一起使用?

  • JAX-RS 具有 HTTP 谓词的注释()和 (),但没有注释。如何为 HTTP 动词添加注释? 如下所示:

  • 问题内容: 如何在实现由jersey API提供的Exceptionmapper的jersey中以编程方式注册我的提供程序?我不想使用@Provider批注,而不想使用ResourceConfig注册提供程序,我该怎么做? 例如: 这是正确的方法吗? 问题答案: 我猜您没有,因为您似乎不确定如何使用它。首先,它不是必需的。如果您 确实 使用它,那应该是它自己的单独的类。您可以在那里注册映射器。 但