Получение значения открытого статического конечного поля / свойства classа в Java через reflection

Скажем, у меня есть class:

public class R { public static final int _1st = 0x334455; } 

Как я могу получить значение поля / свойства «_1st» через reflection?

Сначала извлеките свойство поля classа, затем вы можете получить значение. Если вы знаете тип, вы можете использовать один из методов get с нулевым значением (только для статических полей, фактически со статическим полем аргумент, переданный методу get, полностью игнорируется). В противном случае вы можете использовать getType и написать соответствующий переключатель, как показано ниже:

 Field f = R.class.getField("_1st"); Class t = f.getType(); if(t == int.class){ System.out.println(f.getInt(null)); }else if(t == double.class){ System.out.println(f.getDouble(null)); }... 
  R.class.getField("_1st").get(null); 

Обработка исключений остается как упражнение для читателя.

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

Это работает для всех статических полей, независимо от их окончательности. Если поле не является общедоступным, сначала необходимо вызвать setAccessible(true) , и, конечно, SecurityManager должен разрешить все это.

Я шел по тому же маршруту (просматривая сгенерированный class R), и тогда у меня было это ужасное чувство, что это, вероятно, функция в classе Resources. Я был прав.

Найдено: Ресурсы :: getIdentifier

Думал, что это может спасти людей некоторое время. Хотя они говорят, что его обескураживают в документах, что не слишком удивительно.

  • Статические методы унаследованы в Java?
  • Определение статических элементов в C ++
  • Почему мы не можем использовать это ключевое слово в статическом методе
  • Статическое ключевое слово в c #
  • Объявления переменных в файлах заголовков - статические или нет?
  • Как создать статическую локальную переменную в Java?
  • Когда использовать статические classы в C #
  • Разница между фреймворком и статической библиотекой в ​​xcode4 и как их называть
  • Безопасны ли streamи статических методов
  • Можно ли переопределить статический метод в производном classе?
  • ASP.NET Singleton
  • Interesting Posts

    Изменение языка системы с русского на английский в Vista

    Как узнать, работает ли мое приложение как 32-разрядное или 64-битное приложение?

    В чем разница между идентифицирующими и неидентифицирующими отношениями?

    Сделать терминал распознавать PageUp и PageDown при переназначении на разные клавиши

    Растяните и масштабируйте изображение CSS в фоновом режиме – только с CSS

    Что такое IP-адрес «:: 1»?

    Как генерируются GUID .NET 4?

    C # Справка по чтению иностранных символов с помощью StreamReader

    Вызов метаданных «Невозможно добавить нулевой токен windows – это не приложение» с getApplication () как контекст

    Тестирование Android AsyncTask с помощью Android Test Framework

    Как я могу переопределить встроенные стили с помощью внешнего CSS?

    Что такое регулярное выражение для извлечения всех emojis из строки?

    Как торрент-клиенты обходят брандмауэр маршрутизатора?

    Ffmpeg: Преобразование MKV в MP4 без потерь

    Пример async / wait, который вызывает тупик

    Давайте будем гением компьютера.