最近,我发现了以下结构的代码:
接口:
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()
应该是静态的。
我不是要开始辩论,但这是正确的吗?我读过,为什么 Enum 会实现一个接口,我完全同意所提供的答案,但上面的例子是无效的。
我这样做是因为“建筑师”不想接受我的回答,所以这是为了创造一个强有力的论据(有事实)为什么上述方法是好/坏的。