¿Por qué es posible crear String.java?
Solo estoy tratando de entender por qué puedo crear el archivo “String.java” y compilarlo sin errores. Hasta donde yo sé, la cadena de cargadores de clases llegará al cargador de clases Bootstrap y ya ha cargado String.class.
¿Podrías ayudarme a entenderlo, por favor?
davy.ai
Es posible crear un archivo llamado
String.java
y compilarlo sin errores porque el classloader busca archivos.class
en el classpath, no archivos.java
. Cuando compilasString.java
, se generará un nuevo archivoString.class
, que será cargado por el classloader en lugar del archivoString.class
cargado por el bootstrap classloader.Además, el classloader solo cargará una clase si aún no ha sido cargada por un classloader padre. Si bien es cierto que el bootstrap classloader carga clases Java esenciales como
String.class
, esto no impide que definas tu propia versión deString
en tu aplicación y la compile en un nuevo archivo de clase.En resumen, puedes crear un archivo llamado
String.java
porque el classloader busca archivos.class
, no archivos.java
. Además, el classloader carga una clase solo si aún no ha sido cargada por un classloader padre, por lo que es posible definir tu propia versión de una clase y compilarla sin interferir con la versión de la clase padre.