Miscellaneous Class Loading Topics

There are a few details about class loaders that we haven’t yet covered. These details are not directly related to the security aspects of the class loader, which is why we’ve saved them until now. If you’re interested in the complete details of the class loader, we’ll fill in the last few topics here.

Delegation

As we’ve mentioned, class loading follows a delegation model. This model permits a class loader to be instantiated with this constructor:

protected ClassLoader(ClassLoader parent)

Create a class loader that is associated with the given class loader. This class loader delegates all operations to the parent first: if the parent is able to fulfill the operation, this class loader takes no action. For example, when the class loader is asked to load a class via the loadClass( ) method, it first calls the loadClass( ) method of the parent. If that succeeds, the class returned by the delegate will ultimately be returned by this class. If that fails, the class loader then uses its original logic to complete its task, something like this:

public Class loadClass(String name) {
	Class cl;
	cl = delegate.loadClass(name);
	if (cl != null)
		return cl;
	// else continue with the loadClass(  ) logic 
}

You may retrieve the delegate associated with a class loader with the following method.

public final ClassLoader getParent( )

Return the class loader to which operations are being delegated.

The class loader that exists at the root of the class loader hierarchy ...

Get Java Security, 2nd Edition 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.