Why I need to load the class definition like :
Class.forName(“ClassName”);
What is the need and advantage of this .Typically which is used to load driver class in JDBC.
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
It allows you to build your applications so that key external dependencies are not compiled into the application source-code.
For example, in the JDBC case, it allows you to switch between different driver implementations, and (in theory) different database vendors without changing your source code.
Another use-case is when some supplier develops a generic form of an application with extension points that allow customers to “plug in” their own custom classes. The custom classes are typically loaded using
Class.forName(...).A third use-case is application frameworks and containers which typically use
Class.forName(...)under the hood to dynamically load the classes for application-specific beans, servlets, and so on.A fourth use-case is where the application (or more likely an application library) has modules that are not used in a typical application run. By using
Class.forName(...)internally, the application or library can avoid the CPU and memory overhead of loading and initializing large numbers of unwanted classes. (The Sun Swing libraries apparently do this to reduce application startup times, and I’m sure there are other examples.)However, if you don’t need to be able to do this kind of thing, static dependencies are simpler to implement.
FOLLOWUP
Nope. Obviously, that defeats the purpose. The application (or the framework) typically determines the names of the classes to be dynamically loaded from some configuration file.