不调用get函数返回枚举值

时间:2011-08-11 19:07:18

标签: java enums

在Java中是否可以返回enum值而不必调用函数来返回值,例如我的示例中的getFlag()?如果是这样,怎么样?

public enum MessageFlags {
        BIT0((short)1),
        BIT1((short)2),
        BIT2((short)4),
        BIT3((short)8),
        BIT4((short)16),
        BIT5((short)32),
        BIT6((short)64),
        BIT7((short)128),
        BIT8((short)256),
        BIT9((short)512),
        BIT10((short)1024),

        set_freq(BIT0),
        get_freq(BIT1);

        short bitFlag = 0;
        MessageFlags flag;

        MessageFlags(short flag) {
            this.bitFlag = flag;
        }

        MessageFlags(MessageFlags flag) {
            this.flag = flag;
        }

        public short getFlag() {
            return this.flag.bitFlag;
        }

        public short getValue() {
            return this.bitFlag;
        }
    }

4 个答案:

答案 0 :(得分:3)

只需说出MessageFlags.BITX即可返回与getFlag()

相同的值

答案 1 :(得分:2)

您可以import static MessageFlags.*;并说BITX.getFlag()

这是一个完整的例子:

<强> A.java

package foo;

import static foo.B.*;

public class A{
    public B value = BAR;
}

<强> B.java

package foo;

public enum B{
    BAR, BAZ, BOO
}

答案 2 :(得分:1)

我跟着@ Jeremy的建议:

package foo;

import static foo.B.*;

然后我在set_freq枚举中创建了一个名为MessageFlags的方法。我创建了这个函数static并让它返回short。例如,

public static short set_freqflag() {
    return BIT0.getFlag();
}

set_freqflag的语义有点奇怪,因为你没有设置任何东西,但我目前没有更好的名字。这允许我只是陈述set_freqflag()而不是我之前做的更长的方式。

答案 3 :(得分:0)

我可能已经很晚了,但我正在写信给那些访问这个主题的人寻求帮助。

如果您有一个枚举,并且您希望在不调用get函数的情况下默认返回其值的特定参数,则需要在所选函数上方插入@Override,如:

public class Plants {
  public enum Fruits {
    APPLE ("sweet"),
    GRAPEFRUIT ("sour");

    private String taste;

    Fruits (String taste) {
      this.taste = taste;
    }

    @Override
    public String getTaste() {
      return this.taste;
    }
  }
}

现在你可以在没有get函数的情况下调用你想要的任何枚举值:

Plants.Fruits.APPLE

它会回归“甜蜜”

P.S。我不是一个专业的程序员,如果我偶然写了反传统的东西,请纠正我。