In Java world, there are some scenarios where I see developers used to load the class rather than instantiation. What is the difference between instantiating and loading a class?
|
|
In order for a class to be instantiated it has to be loaded by the classloader...in many cases this is the first time the class has been just-in-time compiled. If you access a static variable on a class, it has to be loaded. If you want to reflect on a class it has to be loaded. There are many circumstances where you might just load a class rather than instantiate. Also the static constructor for a class fires the first time the class is loaded (and before anything else). If you have an explicit static constructor you can use it to perform a global initialization if need be. |
|||
|
|
|
I am not sure if this is what you mean, but a classloader actually locates the definition for a class and makes it available for use by the JVM. Then, you can instantiate an instance of it. |
|||||||
|
|
Generally, "class loading" refers to loading, and initializing the class definitions - meaning loading the bytecode from the class file, creating the Class class, running the static initializers, etc. Once a class is loaded, and initialized, then it would be possible to instantiate an instance of the class -- ie. create an object of that class type. |
|||||
|