Mapeo de variables

Juanma
11 de Marzo del 2005
Necesito mapear variables del modo siguiente.
Imaginaros que tenemos las siguientes variables:
String Titulo1= "Cadena titulo1";
String Titulo2= "Otra Cadena titulo2";
String Titulo3= "Cadena titulo3";
String Titulo4= "Cadena titulo4";

Ahora tenemos una funcion ObtenerVariable(String)
public String ObtenerVariable(String cadena) {
// La cual deberá devolver el contenido de la variable cuyo nombre nos viene por parametro, es decir la variable cadena puede venir con el valor "Titulo3", pero en realidad esta función deberá devolver el valor de la variable, es decir, tendría que devolver la cadena "Cadena titulo1" (tambien me valdría con devolver un objeto de tipo Object)
}


Gracias.

nicokiki
11 de Marzo del 2005
Hola!!!!!!!!!

Busca por el lado de "Reflection" y con eso tendras todo. En el tutor de JAVA de SUN hay bastantes ejemplos de lo q buscas

Salu2!!!!!!!!!!!!!!

David
11 de Marzo del 2005
Hola

Trágicamente, por medio de reflexión no es posible (al menos no se me ocurre cómo) obtener el identificador de una variable referencia.

La reflexión sirve para obtener información acerca de una clase, no de una referencia a una instancia de una clase.


Salud

David

David
11 de Marzo del 2005
Hola

¿Por qué quieres hacer eso? Bueno, hay una forma rápida y sencilla de hacerlo, que es con un Map:

import java.util.*;

public class NombresVariable {
private static Map mapa = new HashMap();

public static void main(String[] args) {

String titulo1 = "Cadena titulo1";
mapa.put("titulo1", titulo1);
String titulo2 = "Otra Cadena titulo2";
mapa.put("titulo2", titulo2);
String titulo3 = "Cadena titulo3";
mapa.put("titulo3", titulo3);
String titulo4 = "Cadena titulo4";
mapa.put("titulo4", titulo4);

System.out.println(obtenerVariable("titulo2"));
}

public static String obtenerVariable(String var) {
return (String)mapa.get(var);
}

}


Salud

David

nicokiki
11 de Marzo del 2005
Hola de nuevo!!!!!!!!

No es q con el nombre de los atributos de la clase quiere obtener sus valores???? Porque eso si se puede hacer con Reflection. Si no es eso entonces entendi mal y pido disculpas al respecto

Salu2!!!!!!!!!!