[英]Is it correct to use enum in this case?
這是關於最佳實踐/風格的問題。
我有一個Printer類,可以打印出不同顏色的元素。 使用Enum作為輸入是否正確:
public class Printer {
public enum Color{RED, GREEN, BLUE}
public void print (Color color){
MyElement myElement = new MyElement();
switch (color) {
case RED:
myElement.setColor("#xxxxxx");
break;
case GREEN:
myElement.setColor("#xxxxxx");
break;
case BLUE:
myElement.setColor("#xxxxxx");
break;
}
myElement.print();
}
}
然后從另一個類中調用該方法,如下所示:
Printer p = new Printer();
p.print(Printer.Color.RED);
...或者將值添加到枚舉中會更好:
public class Printer {
public enum Color {
RED("#xxxxxx"),
GREEN("#xxxxxx"),
BLUE("#xxxxxx");
private final String hex;
Color(String hex){
this.hex = hex;
}
public String getHex(){
return this.hex;
}
}
public void print (Color color){
MyElement myElement = new MyElement();
myElement.setColor(color.getHex());
myElement.print();
}
}
...或者根本不使用枚舉,只使用普通字符串?
我認為您的解決方案沒有任何問題。 我唯一建議的是在Enum上創建一個構造函數並將顏色值存儲在那里。 但這只是一個建議。
它會是這樣的:
public class Printer {
public enum Color{
RED("#FF0000"), GREEN("#00FF00"), BLUE("#0000FF");
private String colorAsString;
private Color(String colorAsString) {
this.colorAsString = colorAsString;
}
public String getColorAsString() {
return this.colorAsString;
}
}
public void print (Color color){
MyElement myElement = new MyElement();
myElement.setColor(color.getColorAsString());
myElement.print();
}
}
在常量位置使用enum
通常是有意義的。 如果應用程序像問題中解釋的那樣簡單,只有1個參數(顏色值),使用字符串常量也很有效。
如果要使用enum
,則第二種方法(即,通過enum
構造函數存儲顏色值的方法)是優選的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.