帮助Java中的枚举

dev*_*ium 6 java enums

是否有可能让枚举更改其值(从内部)?也许更容易理解代码的含义:

enum Rate {
    VeryBad(1),
    Bad(2),
    Average(3),
    Good(4),
    Excellent(5);

    private int rate;

    private Rate(int rate) {
        this.rate = rate;
    }

        public void increateRating() {
            //is it possible to make the enum variable increase?
            //this is, if right now this enum has as value Average, after calling this
            //method to have it change to Good?
       }
}
Run Code Online (Sandbox Code Playgroud)

这是我想要实现的目标:

Rate rate = Rate.Average;
System.out.println(rate); //prints Average;
rate.increaseRating();
System.out.println(rate); //prints Good
Run Code Online (Sandbox Code Playgroud)

谢谢

Car*_*ter 11

是.你可以简单地打电话

rate = Rate.Good;
Run Code Online (Sandbox Code Playgroud)

对于这个特定的情况.但我认为你真正想要的是继任功能.

你在这里:

public class EnumTest extends TestCase {
    private enum X {
        A, B, C;
        public X successor() {
                return values()[(ordinal() + 1) % values().length];
        }
    };

    public void testSuccessor() throws Exception {
        assertEquals(X.B, X.A.successor());
        assertEquals(X.C, X.B.successor());
        assertEquals(X.A, X.C.successor());
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在我的例子中,只需调用`x = x.successor();`你的看起来可能更像`rate = rate.nextRating();`(当然,取决于你如何命名函数).如果你想改变枚举本身的值 - 不是一个包含枚举的变量 - 不,那是不可能的. (2认同)