Java类文件结构

ASM_Guide - 学习笔记1 - Part 1 Core API:

2. Classess:
   2.1 Structure :
     2.1.1 Overview:
       1. 一个类文件包含以下几部分的内容(In fact a compiled class contains):
          <1> A section describing the modifiers(such as public or private),the name, the super class,the interfaces and the
              annotations of a field.
              可见性(public/private..), 类名称, 超类, 接口,以及Annotation.
          <2> One section per field declared in this class . Each section describes the modifiers, the name, the type and the 
              annotations of a field.        
              类中声明的每个成员变量,每一个成员变量部分包含可见性,名称,类型和Annotation.
          <3> One section per method and constructor declared in this class. Each section describes the modifiters, the name ,
              the return and parameter types, and annotations of a method. It also contains the compiled code of the method,
              in the form of a sequence of Java bytecode instructions.
              类中的每一个方法和构造函数. 每一个方法或者构造函数部分描述了可见性,名称,返回值,参数类型以及方法的Annotation.也
              同时包含以Java字节码方式表示的方法编译后的代码.


        2. Java源文件与Java class文件的不同之处:
           <1> 一个类文件只包含一个类,然而一个Java源文件包含多个类.

       <2> 一个类文件不能包含注释.

       <3> 一个类文件不能包含package和import部分,因此所有的类型名称必须是全限定名.

       <4> 一个重要的不同是: 一个类文件包含一个常量池部分.这个池是一个包含在类文件中定义的所有数值,字符串,其他类型常量.
           这些常量只会被定义一次,类文件的其他部分通过他们的索引对常量进行引用.
          
           <5> Java的类型在类文件和Java源文件中的表现方式不同.

    3. 类文件各组成部分:
       

2.1.2 内部名称(Internal name):
      在大多数情况下,包含在类或者接口中的类型(例如: 父类,类实现的接口或者方法抛出的异常)都不能作为基本类型或者数组类型,
      并且这些类型示类或者接口所必须的,那么上述的这些类型在类文件中通过内部名称(Internal name)来表示. 一个类的内部名称
      必须是全限定名,并且使用"/"替换"." .例如String类型的内部名称-java/lang/String.

2.1.3 类型描述(Type descriptors):
      在所有的其他情况下,诸如字段的类型,Java的类型在类文件中通过类型描述符表现.
      一些Java基本类型描述符参考下表:
     

2.1.4 方法描述符(Method descriptors):
      一个方法描述是在一个单独的字符串中表现的一组类型描述(参数类型和方法返回值类型).
      一个方法描述的组成: ( -> 每一个参数类型描述 -> ) -> 返回值类型描述或者V(表示没有返回值即void)
      一个方法描述并不包含方法的名称或者参数的名称.
      以下是简单方法的描述:
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值