Novacreations

Desarollando Software

Reflexión Java

La reflexión en Java es un mecanismo que permite a un programa en ejecución, la capacidad de examinarse y manipularse a si mismo. Lo cual nos permite obtener información de objetos que se encuentran en memoria.

A primera vista puede que no se le vea un uso muy práctico, pero es una de las herramientas que nos proporcionan soluciones elegantes que nos dan gran flexibilidad y modularidad a nuestras aplicaciones.

Por ejemplo podríamos pensar en una aplicación de una empresa la cual tenga una cierta cantidad de módulos, como opciones de usuario, ventas mensuales, alta de proveedores o facturación. Ahora, lo que queremos es poder añadir nuevos módulos de una forma sencilla sin tener que tocar el código que ya hemos escrito.

Una solución a este problema es crear una pequeña interfaz principal, en donde se le listen de forma dinámica todos los módulos. Estos deben de estar almacenados en una base de datos, en donde entre cosas como categoría debemos especificar la clase que va a englobar nuestro modulo.

De esta forma vamos a tener módulos muy concretos con operaciones muy específicas.

Primero tendremos que englobar a todos nuestros módulos en una interfaz, y darle el comportamiento que tendrán todos los módulos, por ejemplo inicializar y mostrar.


interface Ventana
{
public void inicializa();
public void muestra();
}

Ahora tendremos que crear distintos módulos los cuales implementen los métodos que especificamos previamente: Inicializar todos los parámetros de la interfase del módulo y luego mostrarla. Podria ser un Catalogo de Personas o Usuarios en el sistema:


public class CatalogoPersonas implements Ventana
{

public CatalogoPersonas()
{
}

public void inicializa()
{
System.out.println("Inicializamos los parametros de la ventana");
}

public void muestra()
{
System.out.println("Mostramos la ventana");
}

}

Ya que tenemos todos nuestros módulos podríamos crear nuestra Aplicación principal que se encargara de ejecutar nuestros módulos. Aquí los importante es cuando queramos ejecutar nuestro modulo, tengamos el nombre de la clase para poder manipularla.


import java.lang.reflect.*;

public class App
{
public static void main(String args[])
{

try
{
Class cls = Class.forName("CatalogoPersonas");
Object retobj = cls.newInstance();

Ventana ventana = (Ventana)retobj;
ventana.inicializa();
ventana.muestra();

}
catch(Exception e)
{
System.out.println("Error"+e);
}

}

}

Primero con el nombre de la clase en un String lo pasamos a un objeto Clase.

Class cls = Class.forName(“CatalogoPersonas “);

Una vez con el objeto clase, podemos obtener una instancia de ella:

Object retobj = cls.newInstance();

En este punto java creo e inicializo una nueva instancia de nuestro objeto CatalogoPersonas.

Aprovechando las ventajas de las interfaces, ahora podemos manipular este objeto muy fácilmente. Debemos recordad que todos los módulos deben de implementar esta interfase para que puedan adquirir la funcionalidad que deseamos.

Ventana ventana = (Ventana)retobj;

ventana.inicializa();

ventana.muestra();

De esta forma para crear un nuevo modulo, solo tenemos que crear una nueva clase que implemente Ventana, y agregarla a la base de datos. De esta forma nunca tocamos el código que ya tenemos escrito facilitándonos el trabajo.

La Reflexión no se queda aquí, si leemos el API de Java podremos observar que nos ofrece herramientas para conocer el estado de clases, variables y métodos, así como de su ejecución.

Por ejemplo:

Class c = Class.forName(“”);

Method m[] = c.getDeclaredMethods();

for (int i = 0; i < m.length; i++)

System.out.println(m[i].toString());

Nos muestra todos los métodos pertenecientes a una clase. Y podemos invocarlos si usamos el metodo ivoke a los objetos de clase Method.

Podemos crear soluciones muy elegantes con la reflexión. El poder conocer y manipular clases que se desconocen, nos da la posibilidad de crear aplicaciones muy flexibles, escalables y modulares.




Subscribe to email feed



La fábrica de softw

La Fábrica de Software de la Dirección de Innovación y ...

Administradores de A

Durante años aplicación ES File Explorer era la mejor y ...

Apoyo del Conacyt a

El Consejo Nacional de Ciencia y Tecnología (Conacyt), como parte ...

Microsoft Surface St

Esta semana Microsoft anuncio la existencia de su nueva PC ...

Incuba tu proyecto c

¡Buscamos nuevas tecnologías! Si tu proyecto es seleccionado Telcel te otorgará ...

Las 10 funciones de

  Java 8 incluye nueva funcionalidad que nos permite tener un ...

Como usar una funci

Usar una función hash para encriptar una contraseña no es ...

Cómo escribir códi

Nunca supongas a la malicia lo que puede ser explicado ...

Las 114 preguntas de

¿Tienes una entrevista de trabajo en puerta para un posición Java? ...

Believe in technolog

Ziff Davis Publishing es la más grande editorial de contenidos ...