java与C++;? 我在java学习Enums,我想知道爪哇和C++中EnUM的主要区别是什么。 感谢C++中的
,枚举只是一组命名的、积分常数。在Java中,枚举更像是类的命名实例。您可以自定义枚举中可用的成员java与C++;? 我在java学习Enums,我想知道爪哇和C++中EnUM的主要区别是什么。 感谢C++中的,java,c++,Java,C++,,枚举只是一组命名的、积分常数。在Java中,枚举更像是类的命名实例。您可以自定义枚举中可用的成员 C++也会隐式地将枚举值转换成积分等价,而转换必须在java中显式。< /P> 有关的详细信息。C/C++中的枚举是纯整数 Java中的枚举是对象——它们可以有方法(从一个枚举实例到另一个枚举实例的行为不同)。此外,enum类提供了允许对所有enum实例进行迭代和查找enum实例的方法 C++: 爪哇: 一个缺少C++的java枚举的很大特点就是名称()方法。通过这种方式,您可以获得枚举值名称(
C++也会隐式地将枚举值转换成积分等价,而转换必须在java中显式。< /P>
有关的详细信息。C/C++中的枚举是纯整数 Java中的枚举是对象——它们可以有方法(从一个枚举实例到另一个枚举实例的行为不同)。此外,enum类提供了允许对所有enum实例进行迭代和查找enum实例的方法 C++: 爪哇:
一个缺少C++的java枚举的很大特点就是名称()方法。通过这种方式,您可以获得枚举值名称(如在枚举定义中写入的),而无需在定义中添加任何额外的代码行。例如:
enum Type {T1, T2, T3}
Type t = Type.T1;
System.out.println(t.name()); // prints T1
在C++中,枚举只是整数值的列表。 在java中,enum是一个扩展enum的类,更适合编写:
class MyEnum extends Enum<MyEnum>
{
public final static MyEnum VE01 = new MyEnum();
public final static MyEnum VE02 = new MyEnum();
}
有关枚举的方法,请参见。
因为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();
}
在Java中,您甚至可以通过让可扩展枚举实现相同的接口来模拟它们,然后通过调用它们的values()方法将它们的所有值添加到某种集合中。对于半答案。。。C++0x强类型枚举为C++带来了Java枚举的许多好处:强类型、作用域等等。如果编译器支持C++ 0x强类型Enums,则应该考虑使用它们。 参考:
Java中枚举作为对象的一个重要作用是它们真正的类型安全:您只能将有效值传递给需要枚举值的方法。在C++中,你可以轻易地通过<代码> 253代码>代码>,它可以映射到一个有效的枚举值。约阿希姆·绍尔,你的观点是正确的但不相关,问题是C++,其中枚举是类型安全的。注意:C++在它前面没有类声明时,只隐式地将枚举值转换成其积分等价物。
enum MyEnum
{
VE01,VE02;
}
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();
}