首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

深入理解Java类加载机制-连接

符号引用中的类中是否存在符合方法的字段描述符以及简单名称所描述的方法和字段 符号引用中的类、字段、方法的访问性是否可以被当前类访问 符号验证如果无法通过,将会抛出java.lang.IncompatibleClassChangeError异常的子类,如java.lang.IllegalAccessError...如果没有权限访问,抛出java.lang.IllegalAccessError异常 3.2 字段的解析 解析一个未被解析过的字段的符号引用时,首先要对其CONSTANT_Class_info进行解析。...返回直接直接引用 否则查找失败,抛出java.lang.NoSuchFieldError异常 在返回直接引用以前,会对这个字段做权限校验,如果发现A不具备这个字段的访问权限,那么抛出java.lang.IllegalAccessError...java.lang.AbstractMethodError异常 否则,查找失败,抛出java.lang.NoSuchMethodError 在返回直接引用以前,需要对这个方法权限校验,如果发现A不具备对这个方法的访问权限,那么抛出java.lang.IllegalAccessError

48710

类加载机制

如果发现不具备访问权限,将抛出java.lang.IllegalAccessError异常。...如果查找过程成功返回了引用,将会对这个字段进行权限验证,如果发现不具备对字段的访问权限,将抛出java.lang.IllegalAccessError异常。...最后,如果查找过程成功返回了直接引用,将会对这个方法进行权限验证,如果发现不具备对此方法的访问权限,将抛出java.lang.IllegalAccessError异常。...在JDK 9之前,Java接口中的所有方法都默认是public的,也没有模块化的访问约束,所以不存在访问权限的问题,接口方法的符号解析就不可能抛出java.lang.IllegalAccessError...但在JDK 9中增加了接口的静态私有方法,也有了模块化的访问约束,所以从JDK 9起,接口方法的访问也完全有可能因访问权限控制而出现java.lang.IllegalAccessError异常。

62720
领券