lunes, 24 de octubre de 2016

¿Para qué se usa la clase "java.lang.Class" en Java?

java.lang.Class es una de las clases más importantes pero ignoradas por los desarrolladores Java. Es muy importante en el sentido de que provee muchos métodos de utilidad. Por ejemplo los métodos getClass(), forName() que son usados para encontrar y cargar una clase, quizá tu las has usado para cargar los drivers de Oracle o MySQL.



También provee métodos como Class.newInstance() la cual es el corazón de reflection y te permite crear una instancia de una clase sin utilizar el operador new(). La clase no tiene constructores públicos y sus instancias son creadas por la JVM cuando la clase es cargada. El objeto de clase tipo Class también es usado para representar clases, enumeraciones, interfaces, y anotaciones corriendo en una aplicación Java. Los tipos primitivos como byte, short, char, int, float, double, boolean así como la palabra reservada void también son representados como instancias de Class.

Puedes obtener la instancia correspondiente a Class usando la literal class, por ejemplo int.class, float.class o boolean.class. También es usada para representar una instancia de un arreglo en Java. Todos los arreglos con el mismo tipo y la misma dimensión comparten la misma instancia de la clase Class.

Otro uso de java.lang.Class es mientras se implementa el método equals() para verificar si dos objetos son del mismo tipo o no.


java.lang.Class en Java


Cada vez que la JVM crea un objeto, también se crea un objeto de la clase java.lang.Class que describe el tipo de objeto. Todas las instancias del la misma clase comparten el mismo objecto de la clase Class y así puedes obtener el objecto Class llamando el método getClass() de cualquier objeto. Además, este método es heredado de la clase java.lang.Object.

Imagina que tu creas dos instancias de una clase llamada Persona por ejemplo



En este caso, se imprimirá "A y B son instancias de la misma clase" porque ambas son instancias de la clase Persona.

Necesitamos forName() y newInstance() porque varias veces no sabemos el nombre de la clase que hay que inicializar mientras escribimos el código, podría ser que estamos obteniéndolo desde archivos de configuración, bases de datos, red o desde algún flujo de información de una aplicación Java externa.

Es por eso que llamamos de forma reflectiva la creación del objeto, la cual es una de las más poderosas características en Java y que es utilizada por muchos frameworks, por ejemplo Spring, Struts utilizan Java reflection


***El Artículo fue obtenido de JavaRevisited y fue modificado ligeramente para su traducción. Para revisar el contenido original dar clic aquí.

    Choose :
  • OR
  • To comment
No hay comentarios:
Write comentarios