2

2オプションの列挙型を含むJavaクラスがあります。外部クラスには、列挙型のメンバーインスタンスがあります。メンバーのオプションを切り替える方法があります。そのようです:

    public class Foo {
        public enum BarEnum {
            OPTION1, OPTION2;
        }

        private BarEnum barmember;

        private void switchBarmember {
            switch (barmember) {
                case OPTION1: barmember = BarEnum.OPTION2; break;
                case OPTION2: barmember = BarEnum.OPTION1; break;

            }
        }
    }

私の質問は、言うまでもなく変更を実行する方法はありBarEnum.ますか?言い換えると、メソッドを次のように表示する方法はありますか?

        private void switchBarmember {
            switch (barmember) {
                case OPTION1: barmember = OPTION2; break;
                case OPTION2: barmember = OPTION1; break;

            }
        }

方法がない場合は、私に知らせてください。ありがとう!

4

3 に答える 3

2

正確ではありませんが、これは機能します:

public class Foo {
    public enum BarEnum {
        OPTION1,
        OPTION2;

        private BarEnum switchValue ( )
        {
            switch( this )
            {
            case OPTION1:
                 return OPTION2;
            case OPTION2:
                 return OPTION1;
            }

            throw new AssertionError("Should not be here");
        }
    }

    private BarEnum barmember;

    private void switchBarmember {
        barmember = barmember.switchValue( );
    }
}
于 2012-07-10T21:39:58.547 に答える
1

多分この方法:)

class Foo {
    public enum BarEnum {
        OPTION1, OPTION2;
    }
    private BarEnum OPTION1=BarEnum.OPTION1;
    private BarEnum OPTION2=BarEnum.OPTION2;

    private BarEnum barmember;

    private void switchBarmember() {
        switch (barmember) {
            case OPTION1: barmember = OPTION1; break;
            case OPTION2: barmember = OPTION2; break;

        }
    }
}
于 2012-07-10T21:35:55.437 に答える
1

@Pshemoのように新しいフィールドを作成しない限り、これは不可能です。

この列挙型が別のファイルにある場合は、列挙型定数を静的にインポートしてこれを実現できます。

import static foo.TestEnum.ONE;
import foo.TestEnum;

public class StaticImportEnum {
    public static void main (String[] args) {
        TestEnum foo = ONE;
    }
}


package foo;

public enum TestEnum {
    ONE, TWO;
}

ただし、静的インポートは一般的に悪い習慣と見なされているため、慎重に使用する必要があります。

于 2012-07-10T21:39:02.587 に答える