如何使用java声明枚举

时间:2011-08-10 07:16:55

标签: java enums

我想将此示例C#代码转换为java代码:

public enum myEnum {
  ONE = "one",
  TWO = "two",
}; 

因为我想将此常量类更改为枚举

public final class TestConstants {
    public static String ONE = "one";
    public static String TWO= "two";
}

6 个答案:

答案 0 :(得分:84)

public enum MyEnum {
   ONE(1),
   TWO(2);
   private int value;
   private MyEnum(int value) {
      this.value = value;
   }
   public int getValue() {
      return value;
   }
}

简而言之 - 只要提供构造函数参数(并将值设置为相应的字段),就可以为枚举定义任意数量的参数。

正如斯科特所说 - official enum documentation给出了答案。始终从语言功能和结构的官方文档开始。

更新:对于字符串,唯一的区别是您的构造函数参数为String,并且您使用TEST("test")声明枚举

答案 1 :(得分:14)

Java中的{p> enumsclasses。它们有一个隐含的序数值,从0开始。如果你想存储一个额外的字段,那么就像对任何其他类一样:

public enum MyEnum {

    ONE(1),
    TWO(2);

    private final int value;

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

    public int getValue() {
        return this.value;
    }
}

答案 2 :(得分:8)

非常简单如下:

/**
 * @author The Elite Gentleman
 *
 */
public enum MyEnum {
    ONE("one"), TWO("two")
    ;
    private final String value;

    private MyEnum(final String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return getValue();
    }
}

有关详细信息,请访问Oracle Java教程中的Enum Types。另外,请记住,枚举有私有构造函数。


更新,因为您已更新了帖子,我的价值已从int更改为String
相关: Java String enum

答案 3 :(得分:4)

public enum MyEnum
{
    ONE(1),
    TWO(2);

    private int value;

    private MyEnum(int val){
        value = val;
    }

    public int getValue(){
        return value;
    }
}

答案 4 :(得分:4)

好吧,在java中,您还可以创建参数化枚举。假设您要创建一个className枚举,您需要在其中存储classCode以及className,您可以这样做:

public enum ClassEnum {

    ONE(1, "One"), 
    TWO(2, "Two"),
    THREE(3, "Three"),
    FOUR(4, "Four"),
    FIVE(5, "Five")
    ;

    private int code;
    private String name;

    private ClassEnum(int code, String name) {
        this.code = code;
        this.name = name;
    }

    public int getCode() {
        return code;
    }

    public String getName() {
        return name;
    }
}

答案 5 :(得分:2)

public enum NewEnum {
   ONE("test"),
   TWO("test");

   private String s;

   private NewEnum(String s) {
      this.s = s);
   }

    public String getS() {
        return this.s;
    }
}