使用Java注释注入变量

使用Java注释注入变量,java,reflection,annotations,Java,Reflection,Annotations,我已经创建了一个注释,需要使用JAVA注入一个变量(如SLF4j日志变量)。下面是到目前为止我的代码 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface ClassLevelAnno { public String testVariable = "abc"; } 我试图在下面的类中使用这个注释 包装试验 @ClassLevelAnno public clas

我已经创建了一个注释,需要使用JAVA注入一个变量(如SLF4j日志变量)。下面是到目前为止我的代码

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public  @interface ClassLevelAnno {
    public String testVariable = "abc";
}
我试图在下面的类中使用这个注释

包装试验

@ClassLevelAnno
public class UsingTestAnno {
// I need to use testVariable defined in ClassLevelAnno class directly like follow.
    public void testMethod() {
        System.out.println(testVariable);
    }
}
在上面的类中,我需要直接打印变量。
为什么该类级别的注释没有继承其字段。

将注释应用于类与使类继承/实现接口不同<代码>测试变量无法在
中使用TestAnno进行访问。此外,“注入”的含义与您在此处的使用方式不同(常见),请查阅。注释类似于(特殊)接口(这就是为什么它们用
@interface
声明的原因)。因此,在
@interface
中声明的变量仍然是隐式的
静态final
。因此,您可以通过
ClassLevelAnno.testVariable
轻松访问该值。但这并不是说它有道理;不管使用类是否被注释为该类型,也不管它是否以任何方式被注入;您刚刚创建了一个命名常量。对类应用注释与使类继承/实现接口不同<代码>测试变量
无法在
中使用TestAnno进行访问。此外,“注入”的含义与您在此处的使用方式不同(常见),请查阅。注释类似于(特殊)接口(这就是为什么它们用
@interface
声明的原因)。因此,在
@interface
中声明的变量仍然是隐式的
静态final
。因此,您可以通过
ClassLevelAnno.testVariable
轻松访问该值。但这并不是说它有道理;不管使用类是否被注释为该类型,也不管它是否以任何方式被注入;您刚刚创建了一个命名常量。