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异常。

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

  • 相关阅读:
    依赖单元测试开发
    今天晚上的遭遇
    设计,UML,测试驱动开发
    我是LIGHT的LP,今天由我代笔
    转贴一篇关于BitVector32的Blog
    看牙记
    调整过的书籍目录
    Queue和Stack的学习代码
    BitVector32结构学习
    Visual Studio 2008 在64位操作系统上调试代码的解决方式
  • 原文地址:https://www.cnblogs.com/mongotea/p/11979601.html
Copyright © 2011-2022 走看看