回答
Java枚举不像C或C++枚举,它们实际上只是整数的标签。
Java枚举类实现更像类 - 而且它们甚至可以有多个属性。
public enum Ids {
OPEN(100), CLOSE(200);
private final int id;
Ids(int id) { this.id = id; }
public int getValue() { return id; }
}
最大的区别是,他们是类型安全这意味着你不必担心的大小可变分配COLOR枚举。
查看http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html了解更多。
是的。您可以通过数值来构造的枚举,像这样:
enum Ids {
OPEN(100),
CLOSE(200);
private int value;
private Ids(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
更多信息,请参见Sun Java Language Guide。
酷。可以混合吗?即只将数字分配给选定的枚举值。 – 2016-10-19 08:39:20
私有修饰符对于枚举构造函数是多余的 – 2017-01-16 14:53:09
如果你使用非常大的枚举类型,那么以下是有用的;
什么关于使用这种方式:
public enum HL_COLORS{
YELLOW,
ORANGE;
public int getColorValue() {
switch (this) {
case YELLOW:
return 0xffffff00;
case ORANGE:
return 0xffffa500;
default://YELLOW
return 0xffffff00;
}
}
}
只有一个方法..
可以使用静态方法并传递枚举作为参数 像:
public enum HL_COLORS{
YELLOW,
ORANGE;
public static int getColorValue(HL_COLORS hl) {
switch (hl) {
case YELLOW:
return 0xffffff00;
case ORANGE:
return 0xffffa500;
default://YELLOW
return 0xffffff00;
}
}
请注意,这两种方式使用更少的内存和更多的流程单位..我不'不要说这是最好的方法,但它只是另一种方法。
如果你想模仿C/C++(NUM基地和增量的nextS)的枚举:
enum ids {
OPEN, CLOSE;
//
private static final int BASE_ORDINAL = 100;
public int getCode() {
return ordinal() + BASE_ORDINAL;
}
};
public class TestEnum {
public static void main (String... args){
for (ids i : new ids[] { ids.OPEN, ids.CLOSE }) {
System.out.println(i.toString() + " " +
i.ordinal() + " " +
i.getCode());
}
}
}
OPEN 0 100 CLOSE 1 101
- 1. 我可以启用警告来比较枚举值和非枚举值吗?
- 2. 设置值枚举 - Java
- 3. 我可以在枚举中使用枚举吗?
- 4. 我可以在枚举中声明枚举以指定/限制Java中的映射中的键和值吗?
- 5. 我可以在Java中为枚举指定序号吗?
- 6. 我们可以在java中使用C++类型枚举吗?
- 7. 我们可以改变datomic枚举吗?或者我们可以添加任何新的值给datomic枚举吗?
- 8. 我可以使用@switch和枚举吗?
- 9. MySQL:我可以共享枚举吗?
- 10. 我可以比较MySQL枚举吗?
- 11. 我可以使用参数枚举吗?
- 12. 我可以枚举JRuby中Java接口的实例方法吗?
- 13. 我可以用位或对Java枚举
- 14. 在Java中将枚举值设置为随机值
- 15. 我可以在AWS CloudFormation启动URL中设置参数吗?
- 16. 设置空值枚举C#
- 17. 在Rhino中,我可以枚举可用的Java包的列表吗?怎么样?
- 18. Java枚举值
- 19. 我可以配置ServiceStack.Text以将枚举值序列化为camelCase吗?
- 20. 我可以迭代多维枚举(java)吗?
- 21. 在Java中可以枚举具有不等号的名称吗?
- 22. 我可以根据其字段的值获取枚举吗?
- 23. 我可以有其他形式的枚举值吗?
- 24. 我怎么能从我的枚举在Java中设置整数,字符串值?
- 25. 在Java中为枚举值设置空字符串
- 26. C#:一个枚举值可以保存为一个设置?
- 27. 我可以在JpaRepository nativeQuery中使用枚举参数吗?
- 28. 我可以在Razor视图中定义一个枚举吗?
- 29. Java:我可以使用常量字符串作为枚举键值吗?
- 30. 我可以设置IDLE以默认启动Python 2.5吗?
根据您的声明,使用java创建顺序整数的枚举(类似于C++枚举)的最佳实践,对于索引到数组或类似内容,应写入: enum (0), AGE(1), HEIGHT(2), WEIGHT(3); } 谢谢, -bn – 2009-08-13 19:35:56