Because there is an explicit check inside HotSpot JVM to ensure that java.lang.Class cannot be instantiated through JNI, Unsafe etc. See instanceKlass.cpp:void InstanceKlass::check_valid_for_instantiation(bool throwError, TRAPS) { if (is_interface() || is_abstract()) { ResourceMark rm(THREAD); THROW_MSG(throwError ? vmSymbols::java_lang_InstantiationError() : vmSymbols::java_lang_InstantiationException(), external_name()); } if (this == SystemDictionary::Class_klass()) { ResourceMark rm(THREAD); THROW_MSG(throwError ? vmSymbols::java_lang_IllegalAccessError() : vmSymbols::java_lang_IllegalAccessException(), external_name()); }}这样的实例无论如何都是无效的,所以没有任何意义.Such instance would not be valid anyway, so it does not make sense. 这篇关于为什么Unsafe.allocateInstance(Class.class)失败?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
07-28 06:37
查看更多