66,class文件字段列表_v1

类型

名称

数量

u2

fields_count

1

u2

fields

fields_count

字段表:用于描述接口或类中声明的变量,包括类级变量或实例变量,不包局部变量。修饰字段作用域(public,private,protected等)是实例变量还是类变量(static)可变性(final)并发可见性(volatile 是否强制从内存读取)。

字段表的具体结构如下:

类型

名称

数量

类型

名称

数量

u2

access_flags

1

u2

attributes_count

1

u2

name_index

1

attribute_info

attributes

attributes_count

u2

descriptor_index

1

字段修饰符放在 access_flags 项目中,与类中 access_flags 项目非常类似如下:

标志名称

标志值

含义

标志名称

标志值

含义

ACC_PUBLIC

0x0001

字段是否public

ACC_VOLATILE

0x0040

字段是否volatile

ACC_PRIVATE

0x0002

字段是否private

ACC_TRANSIENT

0x0080

字段是否transient

ACC_PROTECTED

0x0004

字段是否protected

ACC_SYNTHETIC

0x1000

字段是否由编译器自动产生

ACC_STATIC

0x0008

字段是否static

ACC_ENUM

0x4000

字段是否enum

ACC_FINAL

0x0010

字段是否final

ACC_PUBLIC,ACC_PROTECTED,ACC_PRIVATE 只能选其一,接口字段必须有ACC_PUBIIC,ACC_STATIC,ACC_FINAL标志,这些都是语言规则所导致的。

全限定名:如"com/bzy/demo" 是这个类的全限定名,紧把类中.替换/而已,为多个全限定名混淆中间加; 符号。

简单名称:没有类型或 参数修饰符的方法或者字段名称。

描述符:描述字段数据类型,方法参数列表(数量,类型,及顺序)返回值。

标识字符

含义

标识字符

含义

B

基本类型 byte

L

基本类型 long

C

基本类型 char

S

基本类型 short

D

基本类型 double

Z

基本类型 boolean

F

基本类型 float

I

基本类型 int

L

对象类型,如java/lang/Object

数组类型:每维度用一个前置[ 符号,如 java.lang.String[][] 二维数组将被记成 "[[Ljava/lang/String;" 整型int[] 记成"[I",用描述符来描述方法时,按先参数列表,后返回值的顺序描述,参数列表按参数顺序放在一组小括号()内。如方法 void inc() 描述符"()V" 方法java.lang.String.toString() 描述为 "()Ljava/lang/String",一个整型数组"int[]"被记录成"[i"。

用描述符来描述方法时,按照先参数列表,后返回值的顺序描述,参数列表按照参数严格顺序放在一组小括号()内,如方法void inc()的描述符为"()v",方法java.lang.String.toString()描述符为"()java/lang/String"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值