详解Java的newInstance()方法:创建此 Class 对象所表示的类的一个新实例

  • Post category:Java

newInstance()是Java中Class类的一个方法,可以动态地创建类的实例对象。该方法会调用无参数构造函数,如果没有提供无参数构造函数,则会抛出InstantiationException异常。

使用newInstance()方法时,需要首先获取类的Class对象,通常有三种方式:

  1. 使用对象的getClass()方法,如:
    Object obj = new MyClass();
    Class<?> cls = obj.getClass();
  2. 使用类名.class,如:
    Class<?> cls = MyClass.class;
  3. 使用Class.forName()方法,如:
    Class<?> cls = Class.forName("com.example.MyClass");

获取Class对象后,可以使用newInstance()方法创建实例对象,如:

Object obj = cls.newInstance();

需要注意,newInstance()方法返回的对象类型为Object,需要进行类型转换才能调用实际的方法。

下面是两条示例说明:

示例一:创建StringBuilder对象

Class<?> cls = Class.forName("java.lang.StringBuilder");
StringBuilder sb = (StringBuilder) cls.newInstance();
System.out.println(sb.capacity());

输出结果为0,说明成功地创建了一个StringBuilder对象。

示例二:创建自定义类对象

class MyClass {
    public MyClass() {
        System.out.println("MyClass instance created.");
    }
}

Class<?> cls = MyClass.class;
MyClass mc = (MyClass) cls.newInstance();

输出结果为”MyClass instance created.”,说明成功地创建了一个MyClass对象。