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