【发布时间】:2011-06-17 06:37:35
【问题描述】:
我想简化特定预定义对象的选择。
我目前有一个枚举定义为
ArtworkType { Poster, Banner, Other }
我想为这些 ArtworkTypes 添加属性,以便我可以在其他地方的代码中使用它们。 ArtworkTypes 的属性要么是预定义的静态标签,要么是从填充到 Properties() 类中的外部配置文件中填充的。
理想情况下,我想做一些简单的事情
ArtworkType.Poster.getWidth();
如果我必须使用最终类,我认为必须使用类似的东西会更复杂
ArtworkType.getWidth(TypeEnum.Poster);
编辑:感谢以下答案,我得出结论,虽然我可以使用枚举来完成,但最好使用外部类(例如 ArtworkUtil)来检索属性我在追
这是迄今为止我创建的示例枚举代码(省略了错误检查):
public enum ArtworkType {
Poster("poster"), Banner("banner"), Other("other");
private String type;
private Dimension dimension;
private ArtworkType(String type) {
this.type = type;
this.dimension = new Dimension(Properties.getProperty("width."+type), Properties.getProperty("height."+type);
}
public Dimension getDimension() {
return dimension;
}
}
虽然我知道这违反了严格枚举的原则,但与枚举相关的值是静态的(在应用程序期间),它可能是两个弊端中的较小者。
我能想到的唯一其他方法是创建一个“ArtworkUtil”类,该类创建一个集合并将所有必需的属性填充到一个对象中并将其存储在集合中。
在代码中访问该类会使其更难读(除非我遗漏了什么?)
【问题讨论】: