jb.*_*jb. 5 java enums coding-style
对于最佳实践,使用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";
}
Run Code Online (Sandbox Code Playgroud)
枚举是一种隐含的变量,它不应该具有未初始化的值.
实际上你的推理对于每种变量都是正确的,而不仅仅是枚举,但是在枚举的特定情况下,你声明了一个可以具有有限数量的可能值的类型,所以null不应该是一个选项.
最佳解决方案确实具有未知价值:
private enum Shape {
TRIANGLE("yellow"),
SQUARE("green"),
CIRCLE("red"),
UNKNOWN("unknown");
private final String color;
Shape(String color) {
this.color = color;
}
};
Run Code Online (Sandbox Code Playgroud)
并初始化每个Shape类型的变量,Shape.UNKNOWN以避免进行任何空检查,这是一种空设计模式.使用枚举时,这种模式更有意义.
注意:由于枚举表示常量,因此约定是为它们提供带下划线的大写名称.