Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java与C++;? 我在java学习Enums,我想知道爪哇和C++中EnUM的主要区别是什么。 感谢C++中的_Java_C++ - Fatal编程技术网

java与C++;? 我在java学习Enums,我想知道爪哇和C++中EnUM的主要区别是什么。 感谢C++中的

java与C++;? 我在java学习Enums,我想知道爪哇和C++中EnUM的主要区别是什么。 感谢C++中的,java,c++,Java,C++,,枚举只是一组命名的、积分常数。在Java中,枚举更像是类的命名实例。您可以自定义枚举中可用的成员 C++也会隐式地将枚举值转换成积分等价,而转换必须在java中显式。< /P> 有关的详细信息。C/C++中的枚举是纯整数 Java中的枚举是对象——它们可以有方法(从一个枚举实例到另一个枚举实例的行为不同)。此外,enum类提供了允许对所有enum实例进行迭代和查找enum实例的方法 C++: 爪哇: 一个缺少C++的java枚举的很大特点就是名称()方法。通过这种方式,您可以获得枚举值名称(

,枚举只是一组命名的、积分常数。在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();
}