有人建议我使用 String Wrapper 而不是 String,目的是明确字符串代表什么。
例如,我有以下枚举。
public enum Priority
{
PRIORITY_URGENT("urgent"),
PRIORITY_HIGH("high"),
PRIORITY_LOW("low");
private String _piorityLevel;
private Priority(String level)
{
_priorityLevel = level;
}
public String getPriorityLevel()
{
return _priorityLevel;
}
....
}
像PriorityLevel一样将优先级String包装成一个新的类来明确表示字符串代表优先级是不是更好的设计,如下所示?
public enum Priority
{
PRIORITY_URGENT(new PriorityLevel("urgent")),
PRIORITY_HIGH(new PriorityLevel("high")),
PRIORITY_LOW(new PriorityLevel("low"));
private PriorityLevel _piorityLevel;
private Priority(PriorityLevel level)
{
_priorityLevel = level;
}
public PriorityLevel getPriorityLevel()
{
return _priorityLevel;
}
....
}
最佳答案
Java 中缺少程序员定义的隐式转换运算符使得编写字符串包装器有些麻烦。 toString
约定会有所帮助,但在许多情况下,转换将是显式的。
想一想您的 API 用户将对 PriorityLevel
执行的常见操作属性(property):他们在任何地方都需要它作为String
他们将不得不写
Priority priority = Priority.PRIORITY_URGENT;
String level = priority.getPriorityLevel().toString();
最后toString()
通话很烦人。虽然在这种情况下你可以避免它
System.out.println("This job has " + priority.getPriorityLevel() + "priority");
最好完全不用考虑。毕竟,enum
已经为您的字符串提供了足够的包装,因此不需要第二层。
关于java - 使用 String Wrapper 是更好的设计吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42015152/