4

私は次の列挙型を持っています:

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インターフェイスを構築することは可能ですか?

ありがとう。

4

3 に答える 3

6

インターフェイスでコンストラクタまたは静的メソッドを指定することはできません。簡潔でわかりやすい説明については、次の記事をご覧ください。インターフェースに静的メソッドはありません

于 2008-09-21T23:33:56.140 に答える
4

列挙型にはすでにvalueOf() (あなたの find メソッド) メソッドがあります。また、「toString()」は java.lang.Object メソッドであるため、すべてのクラスにそれがあります。つまり、強制することはできません。異なる列挙型は異なる初期化を持つ可能性があるため、コンストラクターを強制する価値がわかりません。

敬具

于 2008-09-22T02:21:45.503 に答える
3
  1. インターフェイスで静的メソッドを定義することはできません
  2. コンストラクターはインターフェースで定義できません
  3. toStringはで定義されjava.lang.Objectています。メソッドが定義されていない場合、インターフェイスでそれを要求してもコンパイルエラーが発生することはありません。

とにかくコンストラクターを強制したいのはなぜですか?とにかく、実行時にsの新しいインスタンスを作成することはできませenumん(おそらく何らかのリフレクションメカニズムを介していない限り)。

于 2008-09-21T23:34:08.807 に答える