When calling loadClass()
on a ClassLoader
, does the ClassLoader
first check if the class has been loaded, or does it immediately delegate this check to its parent ClassLoader
?
Java API says:
When requested to find a class or resource, a ClassLoader instance will delegate the search for the class or resource to its parent class loader before attempting to find the class or resource itself.
But there's a specific chapter about class loader in the book Java Reflection in Action that says:
Class loader calls findLoadedClass to check if the class has been loaded already. If a class loader does not find a loaded class, calls loadClass on the parent class loader.
Which is correct?