Miscellaneous Class Loading Topics

There are a few details 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

Beginning with Java 1.2, class loading follows a delegation model. This new model permits a class loader to be instantiated with this constructor:

protected ClassLoader(ClassLoader delegate) Delegation

Create a class loader that is associated with the given class loader. This class loader delegates all operations to the delegate first: if the delegate 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 delegate. 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:

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. ...

Get Java Security 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.