forName()和clazz.newInstance()
时间: 2024-05-15 15:16:51 浏览: 117
forName()和clazz.newInstance()都是Java中用于创建对象的方法,但是它们的实现方式不同。
forName()方法是Class类的一个静态方法,它可以根据类的全限定名(包括包名)获取对应的Class对象,然后可以通过Class对象的newInstance()方法创建一个实例对象,示例代码如下:
```java
Class clazz = Class.forName("com.example.MyClass");
Object obj = clazz.newInstance();
```
clazz.newInstance()方法则是Class类的一个实例方法,它可以直接通过Class对象创建实例对象,示例代码如下:
```java
Class clazz = MyClass.class;
Object obj = clazz.newInstance();
```
需要注意的是,clazz.newInstance()方法只能使用在无参构造函数存在的类上,如果需要使用有参构造函数,需要使用Class类的getConstructor()方法获取对应的构造函数对象,再调用构造函数的newInstance()方法创建实例对象,示例代码如下:
```java
Class clazz = MyClass.class;
Constructor constructor = clazz.getConstructor(int.class, String.class);
Object obj = constructor.newInstance(1, "example");
```
阅读全文