【发布时间】:2010-03-19 00:07:51
【问题描述】:
我和我的同事正在讨论枚举中的逻辑。我个人的偏好是不在 Java 枚举中有任何类型的逻辑(尽管 Java 提供了这样做的能力)。本案例中的讨论集中在枚举内部有一个返回映射的便捷方法:
public enum PackageType {
Letter("01", "Letter"),
..
..
Tube("02", "Packaging Tube");
private String packageCode;
private String packageDescription;
..
..
public static Map<String, String> toMap() {
Map<String, String> map = new LinkedHashMap<String, String>();
for(PackageType packageType : PackageType.values()) {
map.put(packageType.getPackageCode(), packageType.getPackageDescription());
}
return map;
}
}
我个人的偏好是将其应用到服务中。将方法包含在枚举中的论点以方便为中心。这个想法是您不必去服务获取它,而是可以直接查询枚举。
我的论点集中在关注点分离和将任何类型的逻辑抽象到服务中。我不认为“方便”是将此方法放在枚举中的有力论据。
从最佳实践的角度来看,哪个更好?还是仅仅是个人喜好和代码风格的问题?
【问题讨论】:
-
如果字符串是最终的,考虑在静态初始化时制作一个不可变的地图,而不是每次有人调用 toMap() 时都滚动一个