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

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

狄珂
2023-03-14

我有接口资源和实现它的几个类,例如音频、视频...此外,我创建了带有类类型参数的自定义注释MyAnnoection:

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

问题是如何根据将返回的资源类型适当地注释注释@其他注释?

共有1个答案

卞俊贤
2023-03-14

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

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

这个答案是指spring使用表达式语言进行值注释,其中占位符(@Value(“#{systemProperties.dbName})”被定义的一个属性源(例如spring boot)中的数据覆盖

无论如何,你必须重新思考一下你的架构。

 类似资料:
  • 假设我有一个带有属性的注释: 我想创建一个包含多个元注释的复合注释,包括一个带有属性的注释 有没有一种方法可以将复合注释的属性传递给其中一个元注释? 例如,类似这样的东西: 这相当于,但比 谢谢! PS为我对示例注释的错误选择表示歉意-我没有javax。注射@记住命名注释,只是一些具有属性的任意注释。 谢谢大家的回答/评论。 这显然是不可能的。然而,碰巧我的案例有一个简单的解决方法,我将与大家分享

  • 主要内容:1.xml方式的属性赋值,2.@Value注解,3.PropertySource1.xml方式的属性赋值 2.@Value注解 Person.java 这里的第一个@Value是直接赋值 第二个是通过简单的计算算出来的 测试: 3.PropertySource 通过外部文件赋值 在配置类中需要添加@PropertySource注解 指定外部文件的位置 测试:

  • imi 中有一类注解,他们支持将值动态注入到注解属性中,当调用获取注解属性时,才实时计算并返回。 注解说明 @ConstValue 从常量中读取值 属性名称 说明 name 常量名 default 常量不存在时,返回的默认值 @ConfigValue 从配置中读取值 属性名称 说明 name 配置名,支持@app、@currentServer等用法 default 配置名,支持@app、@curr

  • 在spring initialize之后,我希望将第二个bean的属性值合并到第一个bean中。请告知spring是否提供了动态注入值的类。

  • 问题内容: 我有一堆Spring bean,它们是通过注释从类路径中拾取的,例如 在Spring XML文件中,定义了一个PropertyPlaceholderConfigurer: 我想将app.properites的属性之一注入到上面显示的bean中。我不能简单地做这样的事情 因为PersonDaoImpl在Spring XML文件中没有功能(它是通过注释从类路径中拾取的)。我有以下内容: 但

  • 问题内容: 我有一堆Spring bean,它们是通过注释从类路径中拾取的,例如 我想将app.properites的属性之一注入到上面显示的bean中。我不能简单地做这样的事情 因为PersonDaoImpl在Spring XML文件中没有功能(它是通过注释从类路径中拾取的)。我有以下内容: 但是我不清楚我如何从中访问我感兴趣的财产? 问题答案: 你可以在Spring 3中使用EL支持进行此操作