区别
- class.newInstance() 会直接调用该类的无参构造函数进行实例化
- getDeclaredConstructor()方法会根据他的参数对该类的构造函数进行搜索并返回对应的构造函数,没有参数就返回该类的无参构造函数,然后再通过newInstance进行实例化。
- class.getDeclaredConstructor().newInstance() 实例化还可以调用静态类和构造参数
演示
代码
import java.lang.reflect.InvocationTargetException;
public class Test_1 {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
TestClass testClass = TestClass.class.getDeclaredConstructor().newInstance();
TestClass testClas1 = TestClass.class.getDeclaredConstructor(int.class).newInstance(6);
System.out.println("==================== newInstance ====================");
TestClass testClass2 = TestClass.class.newInstance();
System.out.println("通过 newInstance 构造的对象:"+testClass2);
}
}
class TestClass{
public TestClass(){}
public TestClass(int value){
System.out.println(value);
}
static {
System.out.println("静态代码块");
}
}
运行结果
静态代码块
6
==================== newInstance ====================
通过 newInstance 构造的对象:com.huke.TestClass@2f4d3709
|