什么';是java.lang.reflect.Method中的'4161'修饰符的意思

什么';是java.lang.reflect.Method中的'4161'修饰符的意思,java,reflection,Java,Reflection,我使用java反射来获取使用特定注释进行注释的方法。它返回两个方法,带有modifier4161的方法属于接口。但是我检查了修改器的规格,在任何地方都找不到。。。需要帮助,tks:) 修饰符整数基本上是构成位字段的整数标志的组合。您可以使用静态方法获取文本表示。如果您使用此方法,它会告诉您4161代表public volatile,并且它将是错误的 要分解它,由4161表示的位字段由3个整数标志组成:1、64和4096。在中查找这些值,它将告诉您1代表public,64代表volatile。令人

我使用java反射来获取使用特定注释进行注释的方法。它返回两个方法,带有modifier
4161
的方法属于接口。但是我检查了修改器的规格,在任何地方都找不到。。。需要帮助,tks:)


修饰符
整数基本上是构成位字段的整数标志的组合。您可以使用静态方法获取文本表示。如果您使用此方法,它会告诉您
4161
代表
public volatile
,并且它将是错误的

要分解它,由
4161
表示的位字段由3个整数标志组成:
1
64
4096
。在中查找这些值,它将告诉您
1
代表
public
64
代表
volatile
。令人惊讶的是,因为方法不能声明为
volatile
,那么
4096
呢?它甚至不在名单上

答案可以在中找到,我们发现:

  • 4096
    0x1000
    )表示合成方法,即源代码中不存在的方法
  • 64
    0x0040
    )不仅表示
    volatile
    访问修饰符,还可用于表示方法是桥接方法,即编译器生成的方法

然后得出结论,具有
修饰符
4161
的方法是
公共
合成桥方法。这提供了一个相当全面的概述。

公共
位是
0x0001
易失性
位是
0x0040
,那么另一个
0x1000
位对应什么,其中(
4161
0x1041
)?中最大的一位只有
0x0800
@Vulcan似乎是一个合成标志:将添加到应答中。感谢您的回复,您能否进一步解释
public volatile
,这是在
接口中识别
public
方法吗?它可能不是volatile方法,而是桥接方法。值0x40定义了两次,一次为
VOLATILE
,一次为
BRIDGE
。见解释。你可以调用
Method.isBridge()
来找到答案。我没有意识到
4161
是一个组合修饰符,我在谷歌上搜索了
4161
没有找到任何相关结果。你发布的副本是为那些已经知道组合修改器的人准备的。