一只甜甜圈
两种方式:方法1 - 仅适用于具有无参数构造函数的类如果您的类具有无参数构造函数,则可以使用该方法获取Class对象Class.forName()并使用该newInstance()方法创建实例(但请注意,此方法通常被认为是邪恶的,因为它可以破坏Java的已检查异常)。例如:Class> clazz = Class.forName("java.util.Date");Object date = clazz.newInstance();方法2如果类没有任何no-arg构造函数,也可以使用另一种更安全的方法,即查询类对象以获取其Constructor对象并newInstance()在此对象上调用方法:Class> clazz = Class.forName("com.foo.MyClass");Constructor> constructor = clazz.getConstructor(String.class, Integer.class);Object instance = constructor.newInstance("stringparam", 42);这两种方法都称为反射。您通常必须捕获可能发生的各种异常,包括以下内容:JVM无法找到或无法加载您的类您尝试实例化的类没有正确的构造函数构造函数本身引发了异常您尝试调用的构造函数不是公共的已安装安全管理器并阻止反射发生