zoukankan      html  css  js  c++  java
  • 8.1.5 解析CONSTANT_Fieldref_info入口

    8.1.5 解析CONSTANT_Fieldref_info入口
    要解析类型是CONSTANT_Fieldref_info的常量池入口,虚拟机必须首先解析class_index项 中指明的CONSTANT_Class_info入口。因此,解析CONSTANT_Fieldref_info时可能抛出任何因 解析CONSTANT_Class_info而抛出的错误。如果CONSTANT_Class_info解析成功,虚拟机在此 类型和它的超类型上搜索所需要的字段。如果找到了需要的字段,虚拟机要检查当前类是否拥 有访问这个字段的权限。

    如果解析CONSTANT_Class_info成功完成,虚拟机按照如下步骤执行字段搜索过程:

    1)虚拟机在被引用的类型中查找具有指定的名字和类型的字段。如果虚拟机找到了这样一 个字段,这个字段就是成功的字段搜索结果。

    2)否则,虚拟机检查类型直接实现或扩展的接口,以及递归地检查它们的超接口。如果找到了名字和类型都符合的字段,这个字段就是成功的字段搜索结果。

    3)否则,如果类型拥有一个直接的超类,虚拟机检查类型的直接超类,并且递归地检查类 型的所有超类。如果找到了名字和类型都符合的字段,这个字段就是成功的字段搜索结果。

    4)否则,字段搜索失败。

    如果虚拟机在被引用的类或者任何它的超类型中没有找到名字和类型都符合的字段(字段 搜索失败),虚拟机就抛出NoSuchFieldError异常。否则,如果字段搜索成功了,但是当前的类没有权限去访问该字段,虚拟机就抛出IllegalAccessError异常。

    否则,虚拟机把这个人口标记为巳解析,并在这个常量池人口的数据中放上指向这个字段的直接引用。

  • 相关阅读:
    自动化运维工具Ansible实战Playbooks剧本使用
    Mysql5.6.x版本半同步主从复制的开启方法
    mysql数据库的一些基本概念
    mysql之视图
    mysql之索引
    机器学习笔记09-----决策树与随机森林1---决策树概述
    机器学习笔记08-----回归2
    Anaconda 利用conda安装第3方包
    机器学习笔记07-----回归1
    使用navicat导出数据库字典
  • 原文地址:https://www.cnblogs.com/mongotea/p/11979592.html
Copyright © 2011-2022 走看看