看看这个类似的问题。此链接还提供了更多示例和更详细的说明。
To sum up the arguments (from the second link):
Class.newInstance() can only invoke the zero-argument constructor,
while Constructor.newInstance() may invoke any constructor, regardless
of the number of parameters.
Class.newInstance() throws any exception thrown by the constructor,
regardless of whether it is checked or unchecked.
Class.newInstance() requires that the constructor be visible;
Constructor.newInstance() may invoke private constructors under certain
circumstances.
很抱歉编辑我的帖子以添加更多引用,但这比我能更好地解释它。Class.newInstance()的 Javadoc解释如下:
创建由此 Class 对象表示的类的新实例。该类被实例化为一个带有空参数列表的新表达式。如果尚未初始化该类,则将其初始化。
请注意,此方法传播由 nullary 构造函数引发的任何异常,包括已检查的异常。使用此方法可以有效地绕过编译器执行的编译时异常检查。Constructor.newInstance 方法通过将构造函数抛出的任何异常包装在(已检查)InvocationTargetException 中来避免此问题。