最近,我發現了以下結構的驗證碼的正確和錯誤的方法來編寫Java枚舉
接口:
public interface Base<T> {
public T fromValue(String v);
}
枚舉實現:
public enum AddressType implements Base<AddressType> {
NotSpecified("Not Specified."),
Physical("Physical"),
Postal("Postal");
private final String label;
private AddressType(String label) {
this.label = label;
}
public String getLabel() {
return this.label;
}
@Override
public AddressType fromValue(String v) {
return valueOf(v);
}
}
我的直接反應是,無法通過反序列化或反思創建一個枚舉的實例因此,fromValue()
應該是靜態的。
我不是想開始辯論,但這是正確的嗎?我已閱讀,Why would an Enum implement an interface,我完全同意所提供的答案,但上述示例無效。
我這樣做是因爲「架構師」不想接受我的答案,所以這是爲了創建一個強有力的論點(與事實)爲什麼上述方法是好的/壞的。
除了枚舉,還有其他類實現接口嗎? – 2012-08-01 09:54:44
@Edwin Dalorzo,不。只有接口。 – 2012-08-01 09:55:14