Reflection Java

Páginas: 10 (2333 palabras) Publicado: 30 de septiembre de 2012
vaIntroducción al API Reflection (Reflexión) de Java.
Fecha de creación: 27.07.2004 Revisión 1.0 (27.07.2004) Eneko González Benito (Keko) enekog AT euskalnet DOT net Copyright (c) 2004, Eneko González Benito. Este documento puede ser distribuido solo bajo los términos y condiciones de la licencia de Documentación de javaHispano v1.0 o posterior (la última versión se encuentra enhttp://www.javahispano.org/licencias/).

Introducción
[1] El API Reflection es una herramienta muy poderosa que nos permite realizar en Java cosas que en otros lenguajes es imposible. Sin embargo, y a pesar de su potencial, es un API bastante desconocido, sobre todo para los principiantes en el mundo Java. A lo largo de este árticulo, vamos a intentar comprender las posibilidades que nos ofrece este API,introduciéndonos poco a poco en su uso. [2] Todos sabemos que un buen diseño es muy importante (si no imprescindible) en cualquier programa. Para ello, estamos acostumbrados a utilizar herencia, interfaces, etc. en nuestros programas. Sin embargo, la infinita variedad de problemas a los que no podemos tener que enfrentar, hace que estas técnicas no siempre sean suficientes para nuestros propósitos.[3] Pongamos, por ejemplo, que estamos trabajando en un programa que nos ayude a debuggear otros programas, describiendo el contenido de cualquier objeto que queramos. ¿Como hacemos que nuestro programa trabaje con el contenido de dichos objetos? Lo primero que se nos puede ocurrir es crear un interfaz que deben cumplir los objetos describibles, pero ... ¿que ocurre cuando esos objetos no han sidocreados por nosotros? Aqui es donde entra en juego el API Reflection.

Trabajando con clases.
[1] Todos los objetos en java heredan de la clase java.lang.Object y por ello estan dotados de un método getClass, cuya firma es public final Class getClass(). Este método nos devuelve un objeto java.lang.Class, que va a ser nuestro punto de entrada al API Reflection. Si alguna vez has cargado clasesdinamicante en Java, es posible que conozcas esta clase por su método forName que se utiliza para cargar e instanciar clases del classpath, pero a lo mejor no te has parado a mirar otros métodos muy interesantes que tiene, como los siguientes.
q

java.lang.Class forName(String className): Carga una clase del classpath a partir de su

q

q

q

q

q

nombre (nombre completo, con todoslos paquetes. Si la clase no se puede cargar, porque no se encuentra en el classpath, se lanzará una java.lang. ClassNotFoundException. java.lang.reflect.Field getField(String name): Devuelve un campo público de la clase, a partir de su nombre. Si la clase no contiene ningún campo con ese nombre, se comprueban sus superclases recursivamente, y en caso de no encontrar finalmente el campo, selanzará la excepcion java.lang.NoSuchFieldException. java.lang.reflect.Field[] getFields(): Devuelve un array con todos los campos públicos de la clase, y de sus superclases. java.lang.reflect.Method getMethod(String name, Class[] parameterTypes): Devuelve un método público de la clase, a partir de su nombre, y de un array con las clases de los parámetros del método. Si la clase no contiene ningún métodocon ese nombre y esos parámtetros, se lanzará la excepcion java.lang.NoSuchMethodException. java.lang.reflect.Method[] getMethods(): Devuelve un array con todos los métodos públicos de la clase, y de sus superclases. java.lang.Class[] getInterfaces(): Devuelve un array con todos los interfaces que implementa la clase.

[2] Vamos a ver un ejemplo muy sencillo de como utilizar de algunos de esosmétodos. Primero, necesitamos una clase sobre la que vamos a trabajar, como puede ser la siguiente. public class EjemploBean { public String nombre = "Keko"; private String email = "keko@miservidor.es"; private void setNombre(String s) { nombre = s; } protected String getNombre() { return nombre; } public void setEmail(String s) { email = s; } public String getEmail() { return email; } }...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Reflection
  • Java
  • Java
  • Java
  • java
  • JAVA
  • java
  • java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS