Obtener datos de variables en Java

   Bueno, hace tanto que no publico pero es por el tiempo, sin embargo ya son muchos los que me han preguntando como leer el "nombre" de la variable" en Java, es decir, no el valor sino el "nombre" que es lo que muchos buscan, bueno, ahora les dejaré como hacerlo de una fácil y sin complicaciones, para ello utilizamos el método getName() de la clase Field.

   Lo primero que hay que aclarar es que no se puede obtener el nombre así sin más, primero se tiene que instanciar la clase de la cual se tienen los objetos o de la cual se quieren obtener dichas variables, una vez hecho esto entonces se almacenan en un arreglo del tipo "Field" (del inglés "campo") y se cargan una por una, algo como esto:

   Entonces sabiendo esto, veamos un ejemplo práctico:
Field [] variables = MiClase.getClass().getDeclaredFields();
for (int i=0; i<variables.length; i++) {
    System.out.println( "Nombre: "+variables[i].getName());
}

   Pero si no vamos a enviar esas variables a otra clase, no necesitamos almacenarlas, entonces hacemos el arreglo un poco más dinámico, algo como esto:
for (Field variable : MiClase.getClass().getDeclaredFields()) {
    System.out.println( "Nombre: "+variable.getName());
}

   Esto es lo básico, pero podemos extendernos aún más. Siguiendo la documentación encontramos que no solo podemos obtener el nombre de la variable, sino también el tipo, valor o cualquier otra cosa que se relacione directamente a ella. Como ejemplo nuestro código final queda de la siguiente manera:
public class ObtenerVariables {

    String a;
    int b;
    long c;
    double d;
    boolean e;

    //Contador para mostrar el orden de las variables
    static int contador = 1;

    public static void main (String [] args) {
        ObtenerVariables MiClase = new ObtenerVariables();
        for (Field variable : MiClase.getClass().getDeclaredFields()) {
            System.out.println( "Variable número: "+contador+
                    "\nNombre: "+variable.getName()+
                    "\nTipo: "+variable.getGenericType()+
                    "\n----------------------------------------");
            contador++;
        }
    }
}

   Si queremos almacenar las variables entonces recordemos colocarlas dentro de un arreglo, como por ejemplo Field [ ] variables = MiClase.getClass().getDeclaredFields();. Y ¿para que nos sirve esto?, pues para comparar si se esta cargando el valor de una variable específica, si coincide con otro campo que tengamos, ¿o porque no ir más allá?, para compararla y saber si el usuario utilizo esa variable en específico.



2 Comentarios

Escribir Comentario
Freddy Ramos
AUTOR
23 de julio de 2016, 22:41 delete

hola amigo tengo una duda mucho mas interesante y es como obtener los nombres de los parametros de entrada de una metodo ejemplo
public sumar(nombreparam1, nombreparam2){} quisiera saber como obtener los nombres de esos dos parametros espero puedas ayudarme gracias.

Responder
avatar
25 de julio de 2016, 13:29 delete

Esta entrada es algo vieja (Java 1.6), para la versión 8 tienes a tu disposición el método Methods.getParameterNames(Method nombre_metodo)

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión