0

私は最終的に Java で を実装する理由がありenum、1.6 では無効な型であることがわかりました。だから私は列挙型を次のように宣言します

public enum MyEnum = {A=0, B=1, C=3}; 

Eclipseで無効なタイプのエラーを取得します。

4

6 に答える 6

7

それは彼らが使用される方法ではありません。http://docs.oracle.com/javase/tutorial/java/javaOO/enum.htmlで例を参照してください。

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}

Java 列挙型は、たとえば C# よりもはるかに強力です。それらは (ほぼ) 本格的なオブジェクトであるため、数値だけで表すことはできません。ただし、数値を含めることができ、序数値を持ちます。

あなたはで数値を持つことができます

public enum MyEnum {
    A(0), B(1), C(3);

    private final int number;
    MyEnum(int number) {
      this.number = number;
    }
}
于 2013-03-06T14:49:12.037 に答える
3

Javaenumsは C や C++ とはまったく異なりますenums。最大の違いは、enum定数がコンパイル時の整数定数ではなく、本格的なオブジェクトであることです。

あなたの例ではABCはオブジェクトです。したがって、次のような構成A=0, B=1, C=3は許可されません。

チュートリアルをご覧になることをお勧めします。

数値を定数に関連付ける必要ある場合enumは、次のように同様の効果を得ることができます。

public enum MyEnum {
    A(0), B(1), C(3);
    public final int val;
    private MyEnum(int val) {
        this.val = val;
    }
}

MyEnum.A.valこれを行うと、 etcを使用して値にアクセスできます。

于 2013-03-06T14:48:41.590 に答える
3

Java では、enumは型ですが、整数とは互換性がありません。Enum オブジェクトは、メソッドやメンバー変数などを持つことができるという点で、プリミティブよりもクラスに近いです。

Java では、次のように、列挙型にメンバーを追加し、int列挙型メンバーごとに異なる方法で初期化することにより、必要な効果を得ることができます。

public enum MyEnum {
    A(1), B(2), C(3);
    int val;
    private MyEnum (int v) {
        val = v;
    }
    public int value() {
        return val;
    }
};

の各メンバーには、列挙の対応する要素に関連付けられた整数値を返すenumpublic メソッドがあります。value()

于 2013-03-06T14:50:01.087 に答える
2

あなたがするようにこれを行うことはできません。enum次のようにJavaで定義します

enum myenum{a,b,c,d}
于 2013-03-06T14:51:58.933 に答える
0

あなたの質問に答えるにenumは: 技術的にはタイプではありません。enumしたがって、試みたようにタイプの変数を定義することはできません。

enum特殊なデータ型である列挙型 (enum と省略) を定義するためのキーワードです。列挙型が定義されると (クラスを定義する方法と非常によく似ています)、列挙型の名前を使用してそれを参照します。列挙型のドキュメントを確認してください。

于 2013-03-06T14:58:06.740 に答える
0
public enum ModuleType {A,B,C}
于 2013-03-06T14:49:57.607 に答える