最近、次の構造のコードを発見しました。
インターフェース:
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がインターフェイスを実装するのかを読みました。提供された回答に完全に同意しますが、上記の例は無効です。
「アーキテクト」が私の答えを受け入れたくないので、私がこれを行っているのは、上記のアプローチが良い/悪い理由を (事実とともに) 強力な議論を作成するためです。