是否可以使用其注释类读取变量值

时间:2019-03-18 11:48:02

标签: java reflection

以下代码是我的注释类

   import java.lang.annotation.Documented;
   import java.lang.annotation.ElementType;
   import java.lang.annotation.Retention;
   import java.lang.annotation.RetentionPolicy;
   import java.lang.annotation.Target;
   @Documented
   @Target(ElementType.FIELD)
   @Retention(RetentionPolicy.RUNTIME)
   public @interface Search {
     public String name();
     public String value();
   }

以下课程是普通课程

  public class MyClass{

  @Search(name = "first_name", value = "srivas")
  private String first_name;
  @Search(name = "last_name", value = "sam")
  private String last_name;

  public String getFirst_name() {
    return first_name;
  }
  public void setFirst_name(String customername) {
    this.customername = customername;
  }
  public String getLast_name() {
    return last_name;
  }
  public void setLast_name(String last_name) {
    this.last_name= last_name;
  }
 }

这里我要读取变量值

public class MyService{

public void getvalues(){
    MyClass myvals = new MyClass();
    myvals.setFirst_name("Vikram");
    myvals.setLast_name("Kumar");
    for(Field f: MyClass.class.getDeclaredFields()){
                 MyClass searchfields = f.getAnnotation(MyClass.class);

            if (searchfields != null)
            System.out.println(searchfields.name()+" = "+searchfields .value());

            }
        }
    }

我得到以下输出 first_name = srivas, last_name = sam,

但我期望如此。

first_name = vikram, last_name = Kumar,

如果可能的话,是否可以阅读请帮助我

1 个答案:

答案 0 :(得分:0)

做你想做的事真的没有意义。

Annotation用于在编译时执行操作,它不存储变量数据。

您可以使用反射来查找批注并找出与之相关的变量,但是当您可以仅使用getter来获取变量的值而又没有所有麻烦的时候,这会花费很多精力。