1

重複の可能性:
Java列挙型の継承

私は自分の用途に最適な列挙型のライブラリを使用していますが、その名前は恐ろしくて紛らわしいものです。この列挙型から単純に継承して、より良い名前で自分の列挙型を作成できますか?

public enum Settings extends JiggidyWapperfragNautchFrick.SkiddidyBoomCaFriglets {
}

そのようです?IntelliJは私がこれを行おうとしたときに不平を言いましたが、私が提案していることの効果を得るための適切な方法は何でしょうか?

4

4 に答える 4

4

enumいいえ、クラスを拡張することはできません。

唯一の(わずかな)例外は、列挙値が値固有のクラス本体を持つことができることです。これにより、元のクラスを拡張する別のクラスが効果的に作成されenumます。

于 2012-09-14T12:16:17.950 に答える
3

列挙型は最終クラスであるため、サブクラス化することはできません。うまく名前が付けられた別のクラスでラップすることをお勧めします。

おそらくこのようなもの。プライベートコンストラクターを持つことによって、それをインスタンス化することはできません。

public class Nice {

    private Nice(){}

    public static badNamedEnum one(){
        return badNamedEnum.badNamedOne;
    }

    public static badNamedEnum two(){
        return badNamedEnum.badNamedTwo;
    }
}
于 2012-09-14T12:16:59.993 に答える
0

ヨアヒムは正しいですが、列挙型はimplementインターフェイスにすることができます。

于 2012-09-14T12:18:03.527 に答える
0

列挙型は、スイッチやその他のテストを「ハードコード」するために使用されます。サブクラス化を許可しても意味がなく、可能な値が不確実になるため、目的が無効になります。

于 2012-09-14T12:20:01.503 に答える