Можно ли читать значения переменных, используя класс аннотаций - PullRequest
0 голосов
/ 18 марта 2019

Следующий код является моим классом аннотаций

   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 голосов
/ 18 марта 2019

Нет

Также нет смысла делать то, что вы пытаетесь сделать.

Аннотация используется для выполнения действия во время компиляции, это не хранилище для переменных данных..

Вы можете использовать рефлексию, чтобы найти аннотацию и определить, к какой переменной она относится, но это очень трудоемко, когда вы можете просто использовать метод получения, чтобы получить значение переменной без всего этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...