优先使用Constructor.newInstance()
来实例化对象,因为
Class.newInstance()
只能够调用无参构造函数,而Constructor.newInstance()
可以调用任意构造函数(只要参数对的上)。Class.newInstance()
会直接抛出构造器的任意exception(包括checked和unchecked),而Constructor.newInstance()
会将exception包装到InvocationTargetException
。Class.newInstance()
要求构造函数可见(visible),而Constructor.newInstance()
可以调用private的构造函数。