Динамическое именование переменных Java - PullRequest
0 голосов
/ 04 мая 2011

Этот вопрос больше важен для моего познания ...

Есть ли в Java что-то похожее на способность PHP генерировать имя переменной? У меня есть сертификат SCJA, и я учусь в SCJP и никогда не видел этого, но мне было любопытно.

Пример PHP

$application->{$request->getParameter("methodCall")}($request->getParameter('value'));

Есть ли в Java что-нибудь подобное? Я читал здесь, и общий ответ - использовать HashMap, который мне не интересен, поскольку это не решает реальную проблему. Меня больше интересует, возможно ли это решение? Если не так, но просто пытаюсь расширить свои знания!

Спасибо, Джаред

Ответы [ 3 ]

3 голосов
/ 04 мая 2011

Нет, переменные (поля и локальные переменные) статически «создаются» во время компиляции в Java.

Конечно, память всегда занята только во время выполнения, но сколько и какие поля у объекта естьрешено во время компиляции.

Поэтому вы не можете "динамически добавить поле" в Java.

И да: A Map - это решение дляпроблема.«Добавление поля» - это обычно не проблема 1011 *, а попытка решения , которая подходит для некоторых языков (обычно динамических) и не подходит для других.

0 голосов
/ 04 мая 2011

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

0 голосов
/ 04 мая 2011

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

Чтобы сгенерировать поле в классе или переменной, вам нужно сгенерировать код Java и скомпилировать его или байтовый код во время выполнения. Это можно сделать, но в 100 раз сложнее, чем с помощью простой карты. (Я делал это раньше динамически, и я бы не рекомендовал это, если вы действительно не должны)

Если вы хотите выполнить генерацию кода, я бы предложил использовать ASM Objectweb .

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