Java注释:将注释属性的值传递给另一个注释

时间:2015-05-18 10:16:17

标签: java annotations

我有界面资源以及几个实现它的类,例如音频视频 ...此外,我创建了自定义注释< strong> MyAnnotation ,类型为param:

 @MyAnnotation(type = Audio.class)
 class Audio {
 ...
 }

 @MyAnnotation(type = Video.class)
 class Video{
 ...
 }

在代码的其他地方,我必须使用接口资源作为返回类型:

public class Operations<T extends Resource> {
    ....
    @OtherAnnotation(type = Audio.class (if audio), type = Video.class (if video) )
    T getResource();
    ....
}

问题是如何适当地注释注释 @OtherAnnotation ,具体取决于将返回什么类型的资源类型?

1 个答案:

答案 0 :(得分:2)

您要问的是注释属性的动态值。

但是注释只能在编译时设置,这就是为什么它们的值只能是编译时常量的原因。您只能在运行时阅读它们。

有一个类似的问题,有人试图生成注释值,it's answer 解释了为什么没有办法动态生成注释中使用的值更详细一些。在那个问题中,尝试使用静态方法生成的最终类变量。

<小时/> 有一些注释处理器通过处理占位符提供了更多的灵活性。但是,我不认为这适合您的情况,因为您希望在运行时获得动态值。

This answer指的是Spring expression language对价值注释的使用,其中占位符(@Value("#{systemProperties.dbName})")被来自其中一个属性来源的数据所覆盖( example in spring boot

无论如何,您将不得不重新考虑您的架构。