我們有一個REST API,其中客戶端可以提供表示Java Enums中服務器上定義的值的參數。查找Java枚舉的最佳實踐
所以我們可以提供一個描述性錯誤,我們將這個lookup
方法添加到每個枚舉。好像我們只是複製代碼(壞)。有更好的做法嗎?
public enum MyEnum {
A, B, C, D;
public static MyEnum lookup(String id) {
try {
return MyEnum.valueOf(id);
} catch (IllegalArgumentException e) {
throw new RuntimeException("Invalid value for my enum blah blah: " + id);
}
}
}
更新:由valueOf(..)
提供的默認錯誤信息會No enum const class a.b.c.MyEnum.BadValue
。我想從API中提供更多的描述性錯誤。
好吧,IllegalArgumentException沒有錯,它已經是一個RuntimeException。你想在這裏改進什麼? – Riduidel 2010-03-10 16:50:39
添加比僅使用'valueOf'(和'IllegalArgumentException')時提供的描述性消息更多的描述性消息 – 2010-03-10 16:51:47