0

私はsを使うのが大好きですenum、それはコードの可読性と使いやすさを向上させます。しかし、このような場合、「複製された」AおよびBの「列挙型」構造と関数を単純化したい場合があります...それは可能ですか?

public static enum KEYS {

    KEYS() {};

    public static enum RSA {

        RSA() {};

        public static enum A {

            ONE (new String[]{...}),
            TWO (new String[]{...}),
            THREE (new String[]{...});

            public final String[] keys;

            A(String[] keys) {
                this.keys=keys;
            }

            public int getVersion(){
                return keys.length;
            }

        }

        public static enum B {

            ONE (new String[]{...}),
            TWO (new String[]{...}),
            THREE (new String[]{...});

            public final String[] keys;

            B(String[] keys) {
                this.keys=keys;
            }

            public int getVersion(){
                return keys.length;
            }

        }

    }

    ...

}
4

1 に答える 1

1

getVersion()Javaはすべての列挙型を最終(拡張不可)にし、相互または他のクラスから継承できないため、現在、さまざまな列挙型(ネストされているかどうかに関係なく)でメソッドの共通の実装を再利用することは不可能です。すべての列挙型に対してすべてのメソッドとコンストラクターを定義する必要があります。

(注:将来的には、ディフェンダーメソッドを使用するJava 8で可能になる可能性があります)

于 2013-02-23T00:50:30.067 に答える