1

James Gosling による The Java Programming Language では、次のように指定されています。

「他の匿名内部クラスと同様に、列挙定数クラス本体は任意のインスタンス フィールドとメソッドを定義できますが、静的メンバーを宣言したり、コンストラクタを定義したりすることはできません。また、列挙定数は暗黙的に静的フィールドであるため、これらの匿名内部クラスには囲んでいるインスタンスがありません。」

私は次のコードでそれをやろうとしましたが、エラーが発生しました

「フィールド pieceType は静的に宣言できません。静的フィールドは、静的またはトップレベルの型でのみ宣言できます」 (どういう意味ですか)

package com.example;


enum ChessPiece{
    PAWN{
        @Override
        void pieceName(String name) {
            // TODO Auto-generated method stub
            System.out.println("PAWN");
        }
    },
    ROOK{

        @Override
        void pieceName(String name) {
            // TODO Auto-generated method stub
            System.out.println("ROOK");
        }
    },
    QUEEN{
        static String pieceType = "QUEEN"; // ERROR
        @Override
        void pieceName(String name) {
            // TODO Auto-generated method stub
            System.out.println("QUEEN");
        }
    };

    abstract void pieceName(String name);

}

なぜそうなのですか?

4

2 に答える 2

0

クラスでは静的変数のみを宣言できます。

于 2013-02-06T11:20:48.463 に答える