2012-02-15 6 views

答えて

5

java enumは複雑なオブジェクトですが、C++ではすべてのenumオブジェクトが単一の整数値に関連付けられています。 Javaのことができますswitch数だけの種類、文字列や列挙型にさらに

enum MyCategory { 
    SPORT("The sport category", "sport.png"), 
    NEWS("the news category", "news.jpg"); 

    private String description; 
    private String iconPath; 

    private MyCategory(String description, String iconPath) { 
     this.description = description; 
     this.iconPath = iconPath; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public String getIconPath() { 
     return iconPath; 
    } 
} 

:Javaでは、あなたは、単一の列挙型の値に関連したいくつかの属性を持つことができます。しかし、私は、全体として、従来の列挙型を一般化することはできません... Javaの列挙型が行うことができます

EDITもう一つは、(java tutorialから取られた)ごとの値の操作を宣言している:

public enum Operation { 
    PLUS { double eval(double x, double y) { return x + y; } }, 
    MINUS { double eval(double x, double y) { return x - y; } }, 
    TIMES { double eval(double x, double y) { return x * y; } }, 
    DIVIDE { double eval(double x, double y) { return x/y; } }; 

    // Do arithmetic op represented by this constant 
    abstract double eval(double x, double y); 
} 
3

のJavaプログラミング言語enumsは他の言語に比べてはるかに強力であり、栄光の整数よりもはるかに強力です。新しいenum宣言は本格的なクラス(enum型と呼ばれます)を定義します。すべての問題解決に加えて、前のJava 5.0に使用されたint Enum patternを以下に存在する(型保証はないが、名前空間、脆性及びプリント値が情報価値ません):

public static final int SEASON_WINTER = 0; 

それはまた、あなたが任意に追加することができますメソッドとフィールドを列挙型に変換したり、任意のインタフェースを実装したりできます。 Enum型は、すべてのObjectメソッドの高品質な実装を提供します。それらはComparableSerializableであり、シリアル形式は列挙型の任意の変更に耐えるように設計されています。

詳しくはJava Enumsをご覧ください。

関連する問題