Advertising:
Cargadores de clases en Java
Jump to navigation
Jump to search
Un par de notas sobre los ClassLoader[edit]
- Los cargadores de clase estan organizados en una jerarquía
- Un cargador concreto delega la petición de carga de una clase hacia arriba en la jerarquía
- La petición vuelve de vuelta hacia abajo hasta que un cargador de clase sea capaz de cargar la clase
- Si ningun cargador de clase es capaz de cargar la clase se produce una excepción
- Java por defecto proporciona tres cargadores de clases, responsables de la carga desde distintas ubicaciones
- Este es el diagrama de clases de los cargadores de clases habituales
- Pueden existir clases con el mismo nombre en cargadores de clases distintas
- Formas de cargar clases
- ClassLoader.getSystemClassLoader()
- Usa el system class loader (sun.misc.Launcher$AppClassLoader)
- Thread.currentThread().getContextClassLoader()
- Usa el ClassLoader heredado del thread padre
- Puede ser distinto del system class loader (por ejemplo, en el caso de un Servlet)
- Class.forName( nombre clase )
- Usa el ClassLoader del que invoca el método
- Se inicializa la clase (se ejecutan, por ejemplo, los bloques de código estáticos)
- Class.forName(nombre clase, boolean indicando si se inicializa o no la clase, classloader que se usará)
- ClassLoader.getSystemClassLoader()
- Una clase se descarga cuando el recolector de basura recolecta su cargador de clase