java.lang.reflect.Methodオブジェクトに `4161`修飾子意味です

Adams.H:

私は特定のアノテーションを付けているメソッドを取得するためにJavaのリフレクションを使用しています。これは、2つの方法は、改質剤を有するものを返す4161インタフェースに属します。しかし、私はモディファイ仕様を確認して、それがどこか...助け必要TKSを見つけることができません:)

ここでは、画像の説明を入力します。

ロビーCornelissen:

modifiers整数は、基本的にビットフィールドを形成整数フラグの組み合わせです。あなたは、静的に使用できるModifier.toString()テキスト表現を取得する方法を。あなたは、このメソッドを使用している場合、それはそのあなたを言うだろう4161の略でpublic volatileあり、それは間違っているだろう

それを打破するには、ビットフィールドは、によって表される41613つの整数フラグで構成されています1644096これらの値を見上げるModifierのJavadoc、それはそれを教えてくれます1の略public64の略ですvolatile方法は次のように宣言することはできませんので、驚くべきvolatileものについて、と4096それも、リストにないです!

答えはで見つけることができますJVM仕様で、我々はそれを見つけ、:

  • 40960x1000)を示している合成方法、ソースコードに存在しない、すなわち方法。
  • 640x0040)を表しているだけでなく、volatileアクセス修飾子をも方法があることを意味するために使用することができるブリッジ法、コンパイラによって生成される、すなわち方法。

結論と方法ことその後でmodifiersの値4161であるpublic合成ブリッジ方法。この記事では、かなり包括的な概観を提供します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=197509&siteId=1