(十四)访问标志 Access_flags

一、概念  

上一章节讲到了常量池,如下图,常量池之后便是访问标志acess_flags,占2个字节(u2)。

 

 

二、例子

  编写一个接口。

public interface Test{
    
    public final String userName="ADMIN";
}

编译之后,用javap命令行打开,可看到访问标志Access_flags。

C:\Users\Administrator\Desktop>javap -verbose Test.class
Classfile /C:/Users/Administrator/Desktop/Test.class
  Last modified 2018-5-13; size 164 bytes
  MD5 checksum 0948ee61f2cbaaf5477f8c3bea7b62ce
  Compiled from "Test.java"
public interface Test
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
Constant pool:
   #1 = Class              #9             // Test
   #2 = Class              #10            // java/lang/Object
   #3 = Utf8               userName
   #4 = Utf8               Ljava/lang/String;
   #5 = Utf8               ConstantValue
   #6 = String             #11            // ADMIN
   #7 = Utf8               SourceFile
   #8 = Utf8               Test.java
   #9 = Utf8               Test
  #10 = Utf8               java/lang/Object
  #11 = Utf8               ADMIN
{
  public static final java.lang.String userName;
    descriptor: Ljava/lang/String;
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: String ADMIN

}
SourceFile: "Test.java"
  •  如上面橙色标记,可知访问标志值为:flags: ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT

打开Test.class的字节文件,访问标志值紧跟在常量池之后的两个字节,

 

  •  如上图,访问标志值为:0x0601 ,上面已经得出flags: ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT ,参照下表可知,ACC_PUBLIC=0x0001
  • ,ACC_INTERFACE=0x0200,ACC_ABSTRACT =0x0400 ,   访问标志值0x0601  = 0x0001 or 0x0200 0x0400 

 

 

 

转载于:https://www.cnblogs.com/shyroke/p/9031951.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值