科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Class文件详解

Class文件详解

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  我们都知道,Java编译器负责将.java文件编译成.class文件,class文件存储的是java字节码,与.java文件无关(只要你愿意写一个编译器,也可以将别的语言写的源代码编译成.class文件)。

作者:中国IT实验室 来源:中国IT实验室 2007年9月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)


  继续分析Class文件的结构。
  
  上次读取了constant pool,紧接着是这个类或接口的Access flags,JVM定义的关于class或interface的Access flags有:
  
  private static short ACC_PUBLIC  = 0x0001;
  private static short ACC_FINAL   = 0x0010;
  private static short ACC_SUPER   = 0x0020;
  private static short ACC_INTERFACE = 0x0200;
  private static short ACC_ABSTRACT = 0x0400;
  
  // read access flags:
  short access_flags = input.readShort();
  System.out.print("Access flags:");
  if((access_flags & ACC_PUBLIC) == ACC_PUBLIC)
  System.out.print(" public");
  if((access_flags & ACC_FINAL) == ACC_FINAL)
  System.out.print(" final");
  if((access_flags & ACC_SUPER) == ACC_SUPER)
  System.out.print(" super");
  if((access_flags & ACC_INTERFACE) == ACC_INTERFACE)
  System.out.print(" interface");
  if((access_flags & ACC_ABSTRACT) == ACC_ABSTRACT)
  System.out.print(" abstract");
  System.out.println();
  
  然后是this class和super class:
  
  // read this class and super class:
  short this_class_index = input.readShort();
  short super_class_index = input.readShort();
  System.out.println("This class = " + this_class_index);
  System.out.println("Super class = " + super_class_index);
  
  根据this class的index可以从constant pool中得到这个class的信息,super class也一样。每个class都有super class,只有Object的super class index=0。
  
  接下来是这个class继承了多少个interface和每个interface在constant pool中的index:
  
  // read interfaces count:
  short interfaces_count = input.readShort();
  System.out.println("Interfaces count = " + interfaces_count);
  // read each interface:
  for(int i=1; i<=interfaces_count; i++) {
  short interface_index = input.readShort();
  System.out.println("No. " + i + " interface index = " + interface_index);
  }
  
  结果如下:
  
  Access flags: public final super
  This class = 2
  Super class = 4
  Interfaces count = 0
  

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章