Capítulo 17. Reflexión, o "Una clase con nombre de clase"

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

17.0 Introducción

La clase java.lang.Class y el paquete de reflexión java.lang.reflect proporcionan una serie de mecanismos para obtener información de la Máquina Virtual Java. Conocidos colectivamente como reflexión, estos mecanismos te permiten cargar clases sobre la marcha, encontrar métodos y campos en las clases, generar listados de ellos e invocar métodos en clases cargadas dinámicamente. Incluso existe un mecanismo que te permite construir una clase desde cero (bueno, en realidad, a partir de una matriz de bytes) mientras se ejecuta tu programa. Esto es lo más cerca que Java te permite llegar a las mágicas y secretas entrañas de la máquina Java.

La propia JVM es un gran programa, normalmente escrito en C y/o C++, que implementa la abstracción de la Máquina Virtual Java. Puedes obtener el código fuente de OpenJDK y otras JVM a través de Internet, que podrías estudiar durante meses. Aquí nos centraremos sólo en algunos aspectos, y sólo desde el punto de vista de un programador que utilice las facilidades de la JVM, no en cómo funciona internamente; ése es un detalle de implementación que podría variar de una JVM de un proveedor a otra.

Empezaré con la carga dinámica de una clase existente, pasaré a la enumeración de los campos y métodos de una clase y a la invocación de métodos, y terminaré con la creación ...

Get Libro de cocina de Java, 4ª edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.