相关疑难解决方法(0)

什么时候JVM字节码访问修饰符标志0x1000(十六进制)"合成"设置?

对于某些Java字节代码解析器项目,我阅读了JVM规范,并发现Java虚拟机类文件格式访问修饰符字段的位掩码值是

  ACC_PUBLIC = 0x0001
  ACC_FINAL = 0x0010
  ACC_SUPER = 0x0020 # old invokespecial instruction semantics (Java 1.0x?)
  ACC_INTERFACE = 0x0200
  ACC_ABSTRACT = 0x0400
  ACC_SYNTHETIC = 0x1000 
  ACC_ANNOTATION = 0x2000
  ACC_ENUM = 0x4000
Run Code Online (Sandbox Code Playgroud)

不知怎的,我不知道0x1000是为了什么.我在内部类中看到过一次,但是从那时起我检查了所有内部类,这个标志从未设置过.你现在知道这个标志的含义是什么,设置在何处/何时?

java bytecode access-modifiers .class-file

9
推荐指数
1
解决办法
1788
查看次数

getModifiers()方法如何计算多个修饰符的值?

getModifiers()的Java Doc 如下:

int getModifiers()

以整数形式返回此Member表示的成员或构造函数的Java语言修饰符.应使用Modifier类来解码整数中的修饰符.

和Java Docs还提供了不同修饰符及其对应的int值列表:

public static final int ABSTRACT 1024

public static final int FINAL 16

public static final int INTERFACE 512

public static final int NATIVE 256

public static final int PRIVATE 2

public static final int PROTECTED 4

public static final int PUBLIC 1

public static final int STATIC 8

public static final int STRICT 2048

public static final int SYNCHRONIZED 32

public static final int TRANSIENT 128

public …

java

7
推荐指数
1
解决办法
4251
查看次数

标签 统计

java ×2

.class-file ×1

access-modifiers ×1

bytecode ×1