Al llamar al loadClass()
en un ClassLoader
, ¿el ClassLoader
primero comprueba si la clase se ha cargado, o delega inmediatamente este cheque a su padre ClassLoader
?modelo de delegación Java ClassLoader?
Java API dice:
Cuando solicitó a encontrar una clase o un recurso, una instancia de cargador de clases será delegar la búsqueda de la clase o el recurso a su cargador de clases padre antes de tratar de encontrar la clase o recurso en sí mismo.
Pero hay un capítulo específico sobre el cargador de clases en el libro de Java reflexión en la acción que dice:
Cargador de clases llama findLoadedClass para comprobar si la clase se ha cargado already.If un cargador de clases no encuentra una clase cargada, llama a loadClass en el cargador de clases padre.
¿Cuál es la correcta?
Esto no es verdad. Hay muchos modelos válidos de carga de clases como se describe en http://stackoverflow.com/a/245038/632951. Lo que está hablando como "apropiado" es simplemente uno de los modelos. Los otros modelos de hecho no están implementados de esta manera. – Pacerier
Tiene razón, la respuesta era demasiado preceptiva. Agregué un lenguaje más flexible y agregué ejemplos de escenarios en los que un cargador de clases podría desviarse. Gracias por la respuesta. –