java为什么不安全。allocateInstance(Class.Class)失败?
我现在用的是不安全的。当我运行以下代码时:
unsafe.allocateInstance(Class.class)
发生了什么事
Exception in thread "main" java.lang.IllegalAccessException: java.lang.Class
既然Class
是一个非抽象类,为什么它如此特殊?有没有办法构造一个类似Class
的空的allocateInstance
# 1 楼答案
因为在HotSpot JVM中有一个显式检查,以确保不能通过JNI、不安全等实例化
java.lang.Class
。请参见instanceKlass.cpp:这样的实例无论如何都是无效的,所以没有意义