我有界面资源以及几个实现它的类,例如音频,视频 ...此外,我创建了自定义注释< 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 ,具体取决于将返回什么类型的资源类型?
答案 0 :(得分:2)
但是注释只能在编译时设置,这就是为什么它们的值只能是编译时常量的原因。您只能在运行时阅读它们。
有一个类似的问题,有人试图生成注释值,it's answer 解释了为什么没有办法动态生成注释中使用的值更详细一些。在那个问题中,尝试使用静态方法生成的最终类变量。
<小时/> 有一些注释处理器通过处理占位符提供了更多的灵活性。但是,我不认为这适合您的情况,因为您希望在运行时获得动态值。
This answer指的是Spring expression language对价值注释的使用,其中占位符(@Value("#{systemProperties.dbName})"
)被来自其中一个属性来源的数据所覆盖( example in spring boot )
无论如何,您将不得不重新考虑您的架构。