我在java.lang.Class#newInstance0中发现了一些有趣的代码:
// Run constructor
try {
return tmpConstructor.newInstance((Object[])null);
} catch (InvocationTargetException e) {
Unsafe.getUnsafe().throwException(e.getTargetException());
// Not reached
return null;
}
请注意Unsafe.getUnsafe().throwException
语句。它似乎是从一个没有声明会抛出已检查异常的方法中抛出异常!
为什么要这样做?
如果Sun开发人员可以使用此技术,那么我们也可以使用吗?