我如何复制这个 C++ Java 中的枚举开关?

发布于 2024-10-07 10:17:47 字数 285 浏览 2 评论 0原文

我有一些如下所示的 C++ 代码:

enum {
     FOO = 0x01,
     BAR = 0x09;
};

switch (baz) {
     case FOO:
     {
          //...
     }
     break;
     case BAR:
     {
          //...
     }
     break;
}

Is it possible to allocate this behavior in Java?

I have some C++ code that looks like this:

enum {
     FOO = 0x01,
     BAR = 0x09;
};

switch (baz) {
     case FOO:
     {
          //...
     }
     break;
     case BAR:
     {
          //...
     }
     break;
}

Is it possible to replicate this behaviour in Java?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

往事随风而去 2024-10-14 10:17:48

是的,Java 有枚举:

public enum BazEnum {
    FOO(0x01),
    BAR(0x09);

    private int value;

    BazEnum(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public static BazEnum fromValue(int value) {
        for (BazEnum curenum : BazEnum.values()) {
            if (curenum.getValue() == value) {
                return curenum;
            }
        }
        return null;
    }
}

public class MainClass {
    public static void main(String[] params) {
        BazEnum baz = BazEnum.fromValue(0x09);

        switch baz {
            case FOO:
                ...
                break;
            case BAR:
                ...
                break;
            default:
                ...
                break;
        }
    }
}

Yes, Java has enums:

public enum BazEnum {
    FOO(0x01),
    BAR(0x09);

    private int value;

    BazEnum(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public static BazEnum fromValue(int value) {
        for (BazEnum curenum : BazEnum.values()) {
            if (curenum.getValue() == value) {
                return curenum;
            }
        }
        return null;
    }
}

public class MainClass {
    public static void main(String[] params) {
        BazEnum baz = BazEnum.fromValue(0x09);

        switch baz {
            case FOO:
                ...
                break;
            case BAR:
                ...
                break;
            default:
                ...
                break;
        }
    }
}
り繁华旳梦境 2024-10-14 10:17:48

查看 Java 枚举类型教程,其中包含示例关于构造枚举并在 switch 语句中使用它们。

Take a look at the Java Tutorial on Enum Types which has examples on constructing enums and using them in switch statements.

清晰传感 2024-10-14 10:17:48

当然,只需给枚举命名:

enum Baz
{
    FOO, BAR;
}

然后您可以切换 Baz 类型的表达式:

    switch (baz)
    {
    case FOO:
        {

        }
        break;

    case BAR:
        {

        }
        break;
    }

您仍然可以将 FOOBAR 与如果您愿意,可以输入值 1 和 9:

enum Baz
{
    FOO(0x01), BAR(0x09);

    Baz(int value)
    {
        this.value = value;
    }

    public final int value;
}

然后您可以说 baz.value 来获取关联的值。

Sure, just give the enum a name:

enum Baz
{
    FOO, BAR;
}

And then you can switch over expressions of type Baz:

    switch (baz)
    {
    case FOO:
        {

        }
        break;

    case BAR:
        {

        }
        break;
    }

You can still associate FOO and BAR with the values 1 and 9 if you want to:

enum Baz
{
    FOO(0x01), BAR(0x09);

    Baz(int value)
    {
        this.value = value;
    }

    public final int value;
}

Then you can say baz.value to get the associated value.

梅倚清风 2024-10-14 10:17:48
public enum Enum{
     FOO(0x01),
     BAR(0x09);

     Enum(int value){
         this.value=value;
     }
     private int value;
};

public void test() {
    Enum testEnum = null;
    switch(testEnum){
        case FOO:{}break;
        case BAR:{}break;
    }
}
public enum Enum{
     FOO(0x01),
     BAR(0x09);

     Enum(int value){
         this.value=value;
     }
     private int value;
};

public void test() {
    Enum testEnum = null;
    switch(testEnum){
        case FOO:{}break;
        case BAR:{}break;
    }
}
请止步禁区 2024-10-14 10:17:48

虽然 Java 有枚举,但它们是对象而不是基元。仅使用常量可能更简单

static final int 
    FOO = 0x01,
    BAR = 0x09;

switch (baz) {
     case FOO:
          //...
          break;
     case BAR:
          //...
          break;
}

While Java has enum's they are objects not primitives. It may be simpler to just use constants

static final int 
    FOO = 0x01,
    BAR = 0x09;

switch (baz) {
     case FOO:
          //...
          break;
     case BAR:
          //...
          break;
}
我偏爱纯白色 2024-10-14 10:17:48

只需创建一个枚举xDD

公共枚举 EnumName
{
  Foo(),Bar();
} 

开关(巴兹)
{
   案例:EnumName.Foo
    代码
    休息;
}

just create an enum xDD

public enum EnumName
{
  Foo(),Bar();
} 

switch (baz)
{
   case : EnumName.Foo
    code
    break;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文