【发布时间】:2014-06-24 08:26:26
【问题描述】:
我有一个枚举,其中每个枚举映射到一个整数,它与枚举的ordinal() 不匹配。现在我需要一种将整数转换为枚举的方法。我认为有两种选择:
-
具有唯一名称的新方法,例如(惯用语?):
public static MyEnum fromInt(int i) {} -
valueOf()的重载:public static MyEnum valueOf(int i) {}
两者都还好,还是其中一个明显是坏的还是好的?
提供两者是好是坏?如果是,它们应该相同还是行为略有不同,例如如果i 不是有效值,则行为不同。
或者有没有比这两者都优越的第三种选择?
我正在寻找一个简短的答案,说明应该如何做到这一点以符合已建立的 Java 编码实践。枚举将被其他人使用并长期维护。请以某种权威的参考或丰富的经验来回答,而不是纯粹的意见或感觉更好。
另外,这个问题不是关于如何实现这个方法,它只是关于它应该如何命名,如果名称取决于确切的行为,那么与“Java 世界”的其他部分最一致。
【问题讨论】:
-
不要重载 valueOf() - 它会混淆人类。工厂方法是要走的路。
标签: java enums type-conversion