Reflexión en Java II, Obtener propiedades de una clase desconocidas en tiempo de ejecución

En el pos anterior mostré como instanciar un par de clases sencillas según una cadena obtenida desde el teclado esto sin saber que teclearía el usuario y sin usar if’s ni switch si no con la reflexión que es el mecanismo por el cual podemos conocer los detalles y manejar en tiempo de ejecución de una clase “desconocida” en codificación.
En este post mostrare como obtener información de las propiedades de nuestra clase.
Para este post he modificado las clases A y B, agregándole propiedades
classA
 
classB
 

Como ya se menciono anteriormente lo primero que tenemos que hacer es obtener la clase y almacenarla en un objeto tipo Class para esto hacemos uso del método estático Class.forName(Stirng ClassName), la cual recibe como String el nombre de la Clase.

Java a través de la clase java.lang.reflect.Field representa las propiedades públicas una clase, solo tenemos acceso a las propiedades y métodos público de la clase por obvias razones no podemos ver los métodos y propiedades privadas.
Lo primero que tenemos que hacer es recuperar nuestra clase:

 

Para obtener una propiedad la cual conocemos su nombre podremos usar el método _class. getField(String nombrePropiedad), en cambio si no conocemos el nombre de las propiedades que es lo más lógico en este tema. Podremos obtener una lista de las propiedades con _class.getFields() el cual nos retorna un array de Fields con las propiedades de la clase.

 

Para saber el identificador del Field consultamos el método .getName del objeto Field
Podemos saber el tipo de dato de la propiedad consultado al método getType() del objeto Field, si es un dato primitivo nos retornara una cadena con el tipo de dato, si es una objeto no indicará la clase en el Classpath:
Reflexion2.java:
 

Out:
 

Ahora si modificamos la clase para que liste la clase A esta debería de ser la salida:
 
Out:
 

Observe que en no se lista la propiedad R de la clase A ya que esta es una propiedad privada

Con esto termino este post. En el próximo mostrare como podemos modificar y/o consultar el valor de las propiedades.
Código Fuente en proyecto NetBeans6.8

>> Reflexión en Java III, Acceso y modificación de propiedades

<<Reflexión en Java I, Instancia una clase desconocidas en tiempo de ejecución

www.devtics.com.mx