Как имя константы перевести в string?

185
11 марта 2017, 01:28

Есть константа и переменная

final int FLAG_GET_TIME = 2;
String str;

Как сделать так, чтобы переменная "str" стала равна "FLAG_GET_TIME"?

Answer 1

Используя пакет java.lang.reflect можно получить поля класса и перебрать их в цикле. Например:

Field[] fields = MyClass.class.getDeclaredFields();
for (Field field : fields)      
    System.out.println(field.getName());

Проблема в том, что возвращаемый getDeclaredFields массив не сортирован и порядок элементов в нем не определен. Так что нельзя рассчитывать, что первое поле в коде будет также первым в массиве. В вашем условии вы анализируете только статические поля, поэтому можно сделать так:

Field[] fields = MyClass.class.getDeclaredFields();
for (Field field : fields)      
   if(Modifier.isStatic(field.getModifiers()))
      str = field.getName();

Если статическое поле только одно, то этот код сработает так как вы хотите.

READ ALSO
Как получить название файла с Content-Disposition с Headers в Retrofit 2?

Как получить название файла с Content-Disposition с Headers в Retrofit 2?

Загружаю файл с сервера с помощью Retrofit 2, возник вопрос, как можно с Headers с Content-Disposition получить название файла?

300
Элемент заходит на ползунок

Элемент заходит на ползунок

github-corner, помещенный в блок aside выходит на ползунок прокрутки с правой стороны окна браузераКому не трудно, помогите с правкой, пожалуйста

232
Как сделать кнопку картинкой?

Как сделать кнопку картинкой?

Как сделать, чтобы button была картинкой?

331