Можно ли получить доступ к переменной, используя строку, содержащую это имя переменной в JAVA? - PullRequest
0 голосов
/ 15 декабря 2018

В Java, если у меня уже была объявлена ​​строка и она содержит имя переменной.Могу ли я использовать эту строку для доступа к этой переменной?Например,

int sample=10;
String test = "sample";

Здесь возможно использование строкового теста для доступа к целому числу переменной образца .Если да, то как.

1 Ответ

0 голосов
/ 15 декабря 2018

Отражение

Одним из самых сильных аспектов Java является надежный API отражения, предоставляемый стандартными библиотеками.

Отражение позволяет изучать и изменять структуры и поведение классов,методы и атрибуты во время выполнения.

Отражение, по моему мнению, в одиночку отвечает за надежную экосистему Java платформ, сред и языков JVM, доступных сегодня.

Осторожно

Несмотря на то, что рефлексия является мощной и, безусловно, является частью широко распространенного успеха Java, я предостерегаю от ее использования во многих случаях.

По большей части рефлексия используется в программном обеспечениииспользуется другим программным обеспечением (фреймворки, платформы, языки и т. д.).Обычно, когда я вижу, что кто-то спрашивает об отражении (особенно, если он не называет это по имени), он думает о проблеме неправильно.

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

Пример кода

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

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

final String ATTR = "test";
Class<?> clazz = Class.forName("your.fully.qualified.class.name");     
Field[] fields = clazz.getFields();

for ( Field field : fields ) {
    String name = field.getName();

    if ( name == ATTR ) {
       Object value = field.get(name);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...