Class#newInstance
方法已经被弃用了,从注释中可以看到推荐使用Constructor#newInstance
方法生成实例,即直接通过构造方法生成实例:
// getConstructor 方法入参是可变长参数列表,对应类中构造方法的入参类型,这里使用无参构造。
// newInstance 返回的是泛型 T,取决于 clazz 的类型 Class<T>。这里直接用 Object 接收了。
Object instance = clazz.getConstructor().newInstance();
使用 getDeclaredConstructor
方法还可获得 private
的构造方法。
注释中弃用的理由:主要是绕过了编译时异常检查。
@deprecat