Dynamic Class Loading
Navigate Reflection topic: ) |
Dynamic Class Loading allows the loading of java code that is not known about before a program starts. Many classes rely on other classes and resources such as icons which make loading a single class unfeasible. For this reason the ClassLoader
(java.lang.ClassLoader
) is used to manage all the inner dependencies of a collection of classes. The Java model loads classes as needed and doesn't need to know the name of all classes in a collection before any one of its classes can be loaded and run.
Simple Dynamic Class Loading
[edit | edit source]An easy way to dynamically load a Class
is via the java.net.URLClassLoader
class. This class can be used to load a Class
or a collection of classes that are accessible via a URL. This is very similar to the -classpath
parameter in the java
executable. To create a URLClassLoader
, use the factory method (as using the constructor requires a security privilege):
Code section 10.4: Class loader.
URLClassLoader classLoader = URLClassLoader.newInstance(
new URL[]{"http://example.com/javaClasses.jar"});
|
Unlike other dynamic class loading techniques, this can be used even without security permission provided the classes come from the same Web domain as the caller.
Once a ClassLoader
instance is obtained, a class can be loaded via the loadClass
method. For example, to load the class com.example.MyClass
, one would:
Code section 10.5: Class loading.
Class<?> clazz = classLoader.load("com.example.MyClass");
|
Executing code from a Class
instance is explained in the Dynamic Invocation chapter.