Is Class Instantiation by Name Possible in Java?
When dealing with class instantiation, circumstances may arise where the class name is known only as a string. To address this, Java offers two approaches to accomplish this task.
Method 1: Instantiating with a No-Arg Constructor
For classes with a no-argument constructor, Java allows object creation using the Class.forName() method to retrieve the class object and the newInstance() method to create an instance.
Class<?> clazz = Class.forName("java.util.Date"); Object date = clazz.newInstance();
Method 2: Handling Classes with or without No-Arg Constructor
A more comprehensive approach that covers all scenarios, including classes without no-argument constructors, involves querying the class object for its constructor and invoking newInstance() on it.
Class<?> clazz = Class.forName("com.foo.MyClass"); Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class); Object instance = constructor.newInstance("stringparam", 42);
Both methods utilize Java's reflection capabilities. However, it's crucial to handle exceptions that may arise during this process, such as:
The above is the detailed content of Can Java Instantiate Classes Using Only Their Names?. For more information, please follow other related articles on the PHP Chinese website!