2009-06-03 23 views
15

tal como en PHP:¿Java admite variables variables?

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

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

I necesidad de crear un número desconocido de HashMaps sobre la marcha (que están cada uno colocado en un ArrayList). Indique si hay una forma más fácil o más centrada en Java. Gracias.

+12

me duele la cabeza, ¿qué diablos? –

Respuesta

12

Lo mejor que puede hacer es tener un HashMap de HashMaps. Por ejemplo:

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

No se llama variables variables en java.

Se llama reflexión.

Eche un vistazo a los documentos del paquete java.lang.reflect para obtener más información.

Puede hacer todo tipo de cosas utilizando la reflexión.

Bestoes,

jrh.

+2

Bueno, puedes, pero no es una buena idea. Por diversas razones, particularmente la seguridad y el rendimiento del tipo, la reflexión generalmente solo debe utilizarse como último recurso. Aquí simplemente usar un Mapa (como se describe en otras respuestas) es más apropiado. – sleske

+1

No, el OP desea crear variables con un nombre determinado en tiempo de ejecución. Pero no hay nombres de variables en tiempo de ejecución. – newacct

1

Java no es compatible con lo que acaba de hacer en PHP.

Para hacer algo similar solo debe hacer un List<Map<>> y almacenar su HashMap s allí. Puede usar un HashMap de HashMaps.

Una 'variable variable' en Java es una matriz o lista o algún tipo de estructura de datos con tamaño variable.

1

No. haría algo así

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

y luego en su bucle que haría:

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

usted no puede!

No hay una forma directa de hacerlo. Arrays, reflexión, etc. pueden ayudar.