このような列挙型のインターフェイスを構築する方法
質問
次の列挙型があります:
public enum Status implements StringEnum{
ONLINE("on"),OFFLINE("off");
private String status = null;
private Status(String status) {
this.status = status;
}
public String toString() {
return this.status;
}
public static Status find(String value) {
for(Status status : Status.values()) {
if(status.toString().equals(value)) {
return status;
}
}
throw new IllegalArgumentException("Unknown value: " + value );
}
}
すべての列挙型に find()、toString()、およびコンストラクターがあることを確認する StringEnum インターフェイスを構築することは可能ですか?
ありがとう。
解決
インターフェイスでコンストラクターまたは静的メソッドを指定することはできません。適切で簡潔な説明については、次の記事を参照してください。 インターフェイスには静的メソッドはありません
他のヒント
列挙型にはすでに 値の() (あなたの検索メソッド) メソッド。そして、「toString()」は java.lang.Object メソッドであるため、すべてのクラスにはこれが含まれます。言い換えれば、それを強制することはできません。列挙型が異なれば初期化も異なる可能性があるため、コンストラクターを強制する価値がわかりません。
敬具
- 静的メソッドはインターフェイス内で定義できません
- コンストラクターはインターフェイス内で定義できません
toString
で定義されていますjava.lang.Object
, 、メソッドが定義されていない場合、インターフェイスでこれを要求してもコンパイル エラーが発生することはありません。
それにしても、なぜコンストラクターを強制したいのでしょうか?新しいインスタンスを作成することはできません enum
とにかく実行時です(おそらく何らかのリフレクションメカニズムを介していない限り)。
所属していません StackOverflow