私の理解するには、次のコードは、印刷する必要がありFalse
、出力として
私はこのコードを実行したときしかし、それが印刷されてTrue
出力として。
Javaのドキュメントから:
整数の引数にはabstract修飾子、そうでない場合はfalseを含む場合に、trueを返します。
public class Test{
public static void main(String[] args) {
System.out.println(Modifier.isAbstract(byte[].class.getModifiers()));
}
}
いくつかのいずれかの助けが私には、この動作を理解することはできますか?
Javadocのint型java.lang.Class.getModifiers()配列型のための修飾のいくつかのために返されるべきかを指定(たとえば、final
修飾子があることが必要であるtrue
とinterface
改質剤があることが必要ですfalse
)。一方、それは何を指定していないabstract
かstatic
の修飾子が返すように決定を意味し、アレイタイプ、のためにあるべきtrue
か、false
JDKに記載されていません。したがって、任意の実装では、どちらかを返すように選択することができますtrue
かfalse
。
int型java.lang.Class.getModifiers()
整数型に符号化し、このクラスまたはインタフェースのJava言語修飾子を返します。修飾子は、パブリック、保護された、プライベート、最終的に、静的な、抽象的インターフェイスのためのJava仮想マシンの定数から構成され、彼らはクラス修飾子のメソッドを使用して復号化する必要があります。
基本となるクラスが配列クラスの場合は、そのパブリック、プライベートで保護された修飾子はコンポーネント型の修飾子と同じです。このクラスは、プリミティブ型またはvoidを表す場合、その公開修飾子は常にtrueで、protectedおよびprivate修飾子は常にfalseです。このオブジェクトが配列クラスを表す場合、プリミティブ型、またはvoidは、その後、そのfinal修飾子は常にtrueで、そのインタフェース修飾子は常にfalseです。そのほかの修飾子の値は、この仕様によって決定されていません。
修飾子の符号化は、Java仮想マシン仕様、表4.1で定義されています。