Поддерживает ли Java переменные переменные? - PullRequest
15 голосов
/ 03 июня 2009

Например, в PHP:

<?php
$a = 'hello';
$$a = 'world';

echo $hello;
// Prints out "world"
?>

Мне нужно создать неизвестное количество HashMaps на лету (каждый из которых помещается в массив). Скажите, пожалуйста, есть ли более простой или более ориентированный на Java способ. Спасибо.

Ответы [ 5 ]

12 голосов
/ 03 июня 2009

Лучшее, что вы можете сделать - это иметь HashMap из HashMaps. Например:

Map<String,Map<String,String>> m = new HashMap<String,Map<String,String>>();
// not set up strings pointing to the maps.
m.put("foo", new HashMap<String,String>());
1 голос
/ 03 июня 2009

Нет. Вы бы сделали что-то вроде

List<Map<String,String> myMaps = new ArrayList<Map<String,String>>()

и тогда в вашем цикле вы должны сделать:

Map<String,String> newMap = new Hashtable<String,String>();
//do stuff with newMap
myMaps.add(newMap);
1 голос
/ 03 июня 2009

Java не поддерживает то, что вы только что сделали в PHP.

Чтобы сделать что-то похожее, вы должны просто сделать List<Map<>> и сохранить там свои HashMap. Вы можете использовать HashMap из HashMaps.

«Переменная переменная» в Java - это массив или список или какая-то структура данных с переменным размером.

0 голосов
/ 03 июня 2009

Вы не можете!

Прямого пути к этому нет. Массивы, отражения и т. Д. Могут помочь.

0 голосов
/ 03 июня 2009

Это не вызванные переменные переменные в Java.

Это называется отражением.

Для получения подробной информации посмотрите документацию пакета java.lang.reflect.

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

Bestoes

JRH.

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