我正在学习java中的枚举,我想知道java和C++中枚举的主要区别是什么。谢谢
发布于 2010-01-17 18:37:41
在C++中,枚举只是一组已命名的整数常量。在Java中,枚举更像是类的命名实例。您可以自定义枚举上可用的成员。
此外,C++将隐式地将枚举值转换为它们的整数等效值,而这种转换在Java语言中必须是显式的。
有关更多信息,请访问Wikipedia。
发布于 2010-01-17 19:48:54
在c++中,枚举只是整数值的列表。在java中,枚举是一个扩展了枚举的类,它是一种更好的编写方式:
class MyEnum extends Enum<MyEnum>
{
public final static MyEnum VE01 = new MyEnum();
public final static MyEnum VE02 = new MyEnum();
}作为枚举:
enum MyEnum
{
VE01,VE02;
}有关枚举的方法,请参阅this。因为java枚举是一个对象,所以它支持普通java对象所做的一切。赋予它们值或函数:
enum Binary{
ZERO(0),ONE(1);
Binary(int i)
{
value = i;
}
public final int value;
}一个很好的例子是匿名类:
enum State{
StateA{
public State doSomething()
{
//state code here
return StateB;
}
},
StateB{
public State doSomething()
{
return StateA;
}
};
public abstract State doSomething();
}发布于 2010-01-17 18:38:51
C/C++中的枚举是纯整数。
Java中的枚举是对象-它们可以有方法(从一个枚举实例到另一个枚举实例具有不同的行为)。此外,enum类还提供了允许迭代所有枚举实例和查找枚举实例的方法。
C++:
typedef enum { Red, Yellow, Green } Colors;
void canCrossIntersection(Colors c) {
return c == Green;
}Java:
public enum Colors {
RED(false),
Yellow(false),
Green(true)
;
Color(boolean b) { this.b = b; }
private boolean b;
public boolean canCrossIntersection() { return b; }
}https://stackoverflow.com/questions/2080681
复制相似问题