0

私は本に従っており、列挙の例があります。だから私はこれをやっています:

  enum Color {
    GREEN("GREEN"),
    YELLOW("YELLOW"),
    RED("RED");

   String name;

   Color(String name) {
     this.name = name;
     }

   public String getColor() {
        return name;
     }


 }

次に、オブジェクトを作成し、次のようにクラスを介して色を返します。

class TrafficLight extends enum<Color> {   // I am getting an error:
                                           //  Classes cannot directly extend java.lang.Enum

// ...create objects and etc.


}

このエラーを修正するにはどうすればよいですか? これは私の本とまったく同じ構文であり、正しくする方法がわからないためです。

編集:私の本の構文:

enum Suit {
CLUBS("CLUBS"),
DIAMONDS("DIAMONDS"),
HEARTS("HEARTS"),
SPADES("SPADES");
String name;
Suit(String name) { this.name = name; }
public String toString() { return name; }
}

class Suit extends Enum<Suit> // pseudo-code only
implements Comparable<Suit>, Serializable {
public static final Suit CLUBS = new Suit("CLUBS");
public static final Suit DIAMONDS = new Suit("DIAMONDS");
public static final Suit HEARTS = new Suit("HEARTS");
public static final Suit SPADES = new Suit("SPADES");
String name;
Suit(String name) { this.name = name; }
public String toString() { return name; }
// ... compiler generated methods ...
}
4

6 に答える 6

0

おー!そのクラスが java.lang.Enum を直接拡張できないという理由だけです。

于 2013-10-28T11:28:02.920 に答える
0

取得したメッセージに記載されているように、列挙型を拡張することはできません。

Color を返したい場合は、戻り値の型が enum になるメソッドを作成するだけColorです。

于 2013-10-28T11:29:07.083 に答える
0

あなたの本から:

次の疑似コードから、列挙型が内部でどのように定義されているかを感じることができます。これは、上記のスーツ列挙型のモック クラス定義を示しています。

これは、Enum が内部でどのように定義されているかを示すためのものです。

ドキュメントから:

enum 宣言は、クラス (enum 型と呼ばれます) を定義します。enum クラス本体には、メソッドやその他のフィールドを含めることができます。コンパイラは、列挙型を作成するときに、いくつかの特別なメソッドを自動的に追加します。たとえば、宣言されている順序で列挙型のすべての値を含む配列を返す静的値メソッドがあります。

于 2013-10-28T11:34:26.357 に答える
0

私の本の構文:

...

class Suit extends Enum<Suit> // pseudo-code only

疑似コードのみのコメントに注意してください。「疑似」とは、「まったく現実的ではない」という意味です。擬似コードは実際のコードではなく、(通常) コンパイルされません。私は本を​​持っていませんが、おそらくこのコードは舞台裏で物事がどのように機能するかを説明するためのものであり、文字通りコンパイルできるコードではありません.

于 2013-10-28T11:34:31.190 に答える