2009-06-03 26 views
15

Takie jak w PHP:Czy Java obsługuje zmienne zmienne?

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

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

muszę utworzyć nieznaną liczbę HashMaps w locie (z których każdy jest umieszczony w arraylist). Powiedz, czy jest łatwiejszy lub bardziej zorientowany na środowisko Java. Dzięki.

+12

boli mnie głowa, co do cholery? –

Odpowiedz

12

Najlepsze, co możesz zrobić, to mieć HashMap z HashMaps. Na przykład:

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

Nie nazywane zmiennymi w języku Java.

Nazywa się odbicie.

Zapoznaj się z dokumentacją pakietu java.lang.reflect, aby uzyskać szczegółowe informacje.

Możesz robić wszystkie tego rodzaju rzeczy za pomocą refleksji.

Bestoes,

jrh.

+2

Cóż, możesz, ale to nie jest dobry pomysł. Z różnych powodów, w szczególności bezpieczeństwa i wydajności, refleksja powinna być ogólnie stosowana tylko w ostateczności. Tutaj wystarczy użyć mapy (jak opisano w innych odpowiedziach). – sleske

+1

Nie, OP chce tworzyć zmienne o nazwie określonej w czasie wykonywania. Ale w środowisku uruchomieniowym nie ma nazw zmiennych. – newacct

1

Java nie obsługuje tego, co właśnie zrobiłeś w PHP.

Aby zrobić coś podobnego, po prostu wykonaj List<Map<>> i zapisz tam swoje HashMap. Możesz użyć HashMap z HashMaps.

Zmienna "zmienna" w języku Java to tablica lub lista lub rodzaj struktury danych o różnym rozmiarze.

1

Nie byłoby zrobić coś jak

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

a następnie w pętli byś zrobił:

Map<String,String> newMap = new Hashtable<String,String>(); 
//do stuff with newMap 
myMaps.add(newMap); 
0

nie można!

Nie ma bezpośredniej drogi do tego. Tablice, refleksje itp. Mogą pomóc.

Powiązane problemy