我正在使用java反射来获取使用特定Annotation进行注释的方法。它返回两种方法,一种具有修饰符的方法4161属于接口。但是我检查了修改器的规格,在任何地方都找不到它...需要帮助,tks :)
的modifiers整数基本上是形成位字段整数标志的组合。您可以使用静态Modifier.toString()方法来获取文本表示形式。如果使用此方法,它将告诉您4161表示public volatile,这是错误的。
进行分解,位字段表示由4161由3个整数国旗:1,64和4096。在ModifierJavadoc中查询这些值,它将告诉您1代表public和64代表volatile。令人惊讶的是,因为方法不能声明为volatile,那又如何4096呢?甚至不在列表中!
答案可以在JVM规范中找到,我们发现:
4096(0x1000)表示综合方法,即源代码中不存在的方法。64(0x0040)不仅表示volatile访问修饰符,而且还可以用于表示方法是桥接方法,即由编译器生成的方法。然后得出的结论是,modifiers值为的方法4161是public合成桥方法。该文章提供了相当全面的概述。
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |