为什么Class.newInstance()是“邪恶的”?
这是对代码示例的响应:
// Avoid Class.newInstance, for it is evil. Constructor<? extends Runnable> ctor = runClass.getConstructor(); Runnable doRun = ctor.newInstance();
那么,为什么它是邪恶的?
Java API文档解释了原因(http://java.sun.com/javase/6/docs/api/java/lang/Class.html#newInstance()):
请注意,此方法传播由nullary构造函数引发的所有异常,包括已检查的异常。这种方法的使用有效地绕过了编译时异常检查,否则该检查将由编译器执行。该Constructor.newInstance方法通过将构造函数抛出的所有异常包装在(选中)中来避免此问题InvocationTargetException。
Constructor.newInstance
InvocationTargetException
换句话说,它可以使检查异常系统失效。