今天,我有一个风格问题:给定以下代码,我应该重写Enum#toString()
以向应用程序用户呈现本地化字符串还是切换到自定义函数(例如,getLabel()
),还是有其他方法可以达到相同的效果?
我主要是在这里保持干燥,所以硬编码资源包前缀不是一种选择。
我有一个像这样的简单枚举:
public enum DUE_DATE {
START,
PRESENTED;
public String toString() {
return DBResBundle.instance().getString("due_date_lbl_" + name());
}
}
DBResBundle
我可以像msg
在 JSF 中那样访问的 ResourceBundle 实现在哪里:
<h:selectOneMenu value="#{m.due_date}" id="due">
<f:selectItems value="#{dueDates}" var="d"
itemLabel="#{msg['due_date_lbl_'.concat(d.name())]}" />
</h:selectOneMenu>
我也在代码(不仅仅是JSF)上下文中使用枚举,但我没有使用toString()
那里。