5

return "red"ベスト プラクティスとして、不明な値をシミュレートするために、以下のコードを使用することをお勧めしますか? または、unknown("red")オプションを追加して実行する必要がありますreturn Shape.unknown.color;か? 不明な値に関する列挙型の標準 Java 規則はありますか?

private enum Shape {
    triangle("yellow"),
    square("green"),
    circle("red");

    private final String color;
    Shape(String color) {
        this.color = color;
    }
};

public String getShapeColor() {
    if(shape != null) {
        return shape.color;
    }
    return "red";
}
4

2 に答える 2

9

列挙型は暗黙的に、初期化されていない値を持つことを想定されていない一種の変数です。

実際、あなたの推論は、列挙型だけでなく、あらゆる種類の変数に当てはまりますが、列挙型の特定のケースでは、有限数の可能な値を持つことができる型を宣言するためnull、オプションにするべきではありません。

最善の解決策は、実際には不明な値を持つことです。

private enum Shape {
    TRIANGLE("yellow"),
    SQUARE("green"),
    CIRCLE("red"),

    UNKNOWN("unknown");

    private final String color;
    Shape(String color) {
        this.color = color;
    }
};

Shapeまた、型のすべての変数を に初期化して、 null デザイン パターンShape.UNKNOWNの一種である null チェックを行わないようにします。列挙型を扱う場合、このパターンはさらに理にかなっています。

注: 列挙型は定数を表すため、慣例ではアンダースコア付きの大文字の名前を付けます。

于 2013-01-08T02:06:40.450 に答える
0

おそらく、形状変数が不明な場合は null になるため、インスタンスを渡す静的メソッドを選択します

public static String getShapeColor(Shape shape) {
    if(shape != null) {
        return shape.color;
    }
    return "red";
}
于 2013-01-08T02:14:20.620 に答える