- なぜ誤った結果を返すisAbstract()修飾子?

ジョーカー:

私の理解するには、次のコードは、印刷する必要があり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修飾子があることが必要であるtrueinterface改質剤があることが必要ですfalse)。一方、それは何を指定していないabstractstaticの修飾子が返すように決定を意味し、アレイタイプ、のためにあるべきtrueか、falseJDKに記載されていません。したがって、任意の実装では、どちらかを返すように選択することができますtruefalse

int型java.lang.Class.getModifiers()

整数型に符号化し、このクラスまたはインタフェースのJava言語修飾子を返します。修飾子は、パブリック、保護された、プライベート、最終的に、静的な、抽象的インターフェイスのためのJava仮想マシンの定数から構成され、彼らはクラス修飾子のメソッドを使用して復号化する必要があります。

基本となるクラスが配列クラスの場合は、そのパブリック、プライベートで保護された修飾子はコンポーネント型の修飾子と同じですこのクラスは、プリミティブ型またはvoidを表す場合、その公開修飾子は常にtrueで、protectedおよびprivate修飾子は常にfalseです。このオブジェクトが配列クラスを表す場合、プリミティブ型、またはvoidは、その後、そのfinal修飾子は常にtrueで、そのインタフェース修飾子は常にfalseですそのほかの修飾子の値は、この仕様によって決定されていません。

修飾子の符号化は、Java仮想マシン仕様、表4.1で定義されています。

おすすめ

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