zoukankan      html  css  js  c++  java
  • 8.1.7 解析CONSTANT_interfaceMethodref_info入口

    8.1.7 解析CONSTANT_interfaceMethodref_info入口

    要解析类型为CONSTANT_interfaceMethodref_info的常量池人口,虚拟机首先要解析 class_index项中指定的CONSTANT_Class_info人口。所以,任何在解析CONSTANT_Class_info 过程中可能抛出的错误,在解析CONSTANT_InterfaceMethodref_info过程中都有可能抛出。如果解析CONSTANT_Class_info成功,虚拟机在接口和它的超类型中搜索指定的方法。(虚拟机不需要确认当前类型由访问方法的权限,因为接口中定义的所有方法都是隐含公开的。)

    如果解析CONSTANT_Class_info成功完成了,虚拟机按照如下步骤来执行接口方法解析:

    1)如果被解析的类型是一个类,而非接口,虚拟机抛出IncompatibleaassChangeError异常。

    2)否则,被解析的类型是一个接口。虚拟机检查被引用的接口是否有方法符合指定的名字 和描述符。如果发现了这样的一个方法,该方法就是成功的接口方法搜索结果。

    3)否则,虚拟机检查类(此处怀疑为原书错误?应该是接口。——译者注)的直接超接口, 并且递归地检查接口的所有超接口以及java.lang.Object类来查找符合指定名字和描述符的方法。 如果发现了这样的一个方法,该方法就是成功的接口方法搜索结果。

    4)如果虚拟机没有在被引用的接口和它的任何超类型中找到名字、返回类型、参数的数量 和类型都符合的方法,虚拟机抛出NoSuchMethodError异常。

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

  • 相关阅读:
    easyui datagrid 前后台代码
    JVM
    序列化
    Android UI设计
    多线程
    泛型
    字符串
    B+树:MySql数据库索引是如何实现的
    大数据判存算法:海量数据中快速判断某个数据是否存在
    陌生单词
  • 原文地址:https://www.cnblogs.com/mongotea/p/11979601.html
Copyright © 2011-2022 走看看