2009-06-03 3 views
15

Такие, как в PHP:Поддерживает ли Java переменные переменных?

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

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

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

+12

У меня болит голова, что за черт? –

ответ

12

Лучшее, что вы можете сделать, это иметь 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>()); 
0

Его не называемые переменные переменные в java.

Его называют отражение.

Посмотрите на java.lang.reflect документы пакета для деталей.

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

Бест,

jrh.

+2

Ну, вы можете, но это не очень хорошая идея. По разным причинам, особенно типу безопасности и производительности, отражение обычно следует использовать только в качестве последнего средства. Здесь лучше всего использовать карту (как описано в других ответах). – sleske

+1

Нет, OP хочет создать переменные с именем, определенным во время выполнения. Но во время выполнения нет имен переменных. – newacct

1

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

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

«переменная переменная» в Java представляет собой массив или список или некоторую структуру данных с разным размером.

1

Нет, вы бы сделать что-то вроде

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); 
0

Вы не можете!

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

Смежные вопросы