Получить значение аннотированной переменной - PullRequest
0 голосов
/ 01 февраля 2019

Можно ли получить аннотируемую переменную?У меня есть переменная, подобная этой ниже:

  @Flag
  FlagElements flagElements = new FlagElements("key1", "type1", "value1", "desc1");

FlagElements определяется следующим образом:

public class FlagElements<T>{
  public String key;
  public String type;
  public T value;
  public String description;

  public FlagElements(String key, String type, T value, String description) {
    this.key = key;
    this.type = type;
    this.value = value;
    this.description = description;
  }
}

Я хочу получить значение flagElements.Возможно ли это?

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете добиться этого, используя отражение в полях вашего класса, таким образом, вы можете проверить, если поле помечено, например, @Flag, ниже приведен простой пример:

for(Field field  : TestObject.class.getDeclaredFields())
{
    if (field.isAnnotationPresent(Flag.class))
        {
              Object value = field.get(objectInstance);//objectInstance is an instance of FlagElements, you can instanciate it using the new operator if you know already know the class type or use reflection if you don't know what you'll have as a class.
        }
}

Но убедитесь, что аннотация вашего флага имеетRetentionPolicy.RUNTIME

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