答案 0 :(得分:6)
modifiers
整数基本上是形成位字段的整数标志的组合。您可以使用静态Modifier.toString()
方法来获取文本表示形式。如果使用此方法,它将告诉您4161
代表public volatile
,并且这是错误的。
为进行分解,由4161
表示的位字段由3个整数标志组成:1
,64
和4096
。在Modifier
Javadoc中查找这些值,它会告诉您1
代表public
,而64
代表volatile
。令人惊讶的是,由于不能将方法声明为volatile
,4096
又如何呢?甚至不在列表中!
答案可以在JVM specification中找到,我们在其中找到
:4096
(0x1000
)表示 synthetic 方法,即源代码中不存在的方法。64
(0x0040
)不仅代表volatile
访问修饰符,还可以用来表示方法是 bridge 方法,即编译器生成的方法。于是得出的结论是,modifiers
值为4161
的方法是public
合成桥方法。该article提供了相当全面的概述。