Используйте строку вместо имени переменной - PullRequest
5 голосов
/ 01 марта 2011

Если у вас есть переменная Java с именем xyz.Затем я определяю строку, которая имеет значение именованной переменной, с которой я хочу играть.

String x="xyz";

Как заставить Java распознавать эту строку x как указатель на переменную xyz?

Произвольный пример:

JButton a= new JButton();

Позже ...

String x="a";

Теперь я хочу сказать что-то вроде

JButton called string x.setPreferredSize(new Dimension(40,30));

Ответы [ 3 ]

5 голосов
/ 01 марта 2011

В общем, если вы хотите получить доступ к переменной таким способом, вам нужно использовать Reflection, который медленнее и потенциально опасен.

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

Map<String, JComponent> currentComponents = new HashMap<String, JComponent>();

currentComponents.put("a", new JButton());

String x = "a";

currentComponents.get(x).setPreferredSize(new Dimension(40,30));
4 голосов
/ 01 марта 2011

Короткий ответ: вы не можете сделать что-то подобное. Это просто не то, как работает язык Java. Длинный ответ заключается в том, что вы можете смоделировать что-либо, используя Reflection API .

0 голосов
/ 01 марта 2011

Переменная Java называется xyz

Нет, она называется x.Его значение "xyz".

String x="a";

Теперь вы присваиваете значение "a" для строки с именем x.Он не имеет никакого отношения к вашему JButton, хотя его имя a.

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