首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java和C++枚举的区别?

java和C++枚举的区别?
EN

Stack Overflow用户
提问于 2010-01-17 18:34:06
回答 6查看 14.5K关注 0票数 11

我正在学习java中的枚举,我想知道java和C++中枚举的主要区别是什么。谢谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-17 18:37:41

在C++中,枚举只是一组已命名的整数常量。在Java中,枚举更像是类的命名实例。您可以自定义枚举上可用的成员。

此外,C++将隐式地将枚举值转换为它们的整数等效值,而这种转换在Java语言中必须是显式的。

有关更多信息,请访问Wikipedia

票数 14
EN

Stack Overflow用户

发布于 2010-01-17 19:48:54

在c++中,枚举只是整数值的列表。在java中,枚举是一个扩展了枚举的类,它是一种更好的编写方式:

代码语言:javascript
复制
class MyEnum extends Enum<MyEnum>
{
public final static MyEnum VE01 = new MyEnum();
public final static MyEnum VE02 = new MyEnum();
}

作为枚举:

代码语言:javascript
复制
enum MyEnum
{
 VE01,VE02;
}

有关枚举的方法,请参阅this。因为java枚举是一个对象,所以它支持普通java对象所做的一切。赋予它们值或函数:

代码语言:javascript
复制
enum Binary{
 ZERO(0),ONE(1);
 Binary(int i)
 {
   value = i;
 }
 public final int value;
}

一个很好的例子是匿名类:

代码语言:javascript
复制
enum State{
StateA{
   public State doSomething()
   {
     //state code here
     return StateB;
    }
},
StateB{
    public State doSomething()
    {
       return StateA;
    }
};
public abstract State doSomething();
}
票数 19
EN

Stack Overflow用户

发布于 2010-01-17 18:38:51

C/C++中的枚举是纯整数。

Java中的枚举是对象-它们可以有方法(从一个枚举实例到另一个枚举实例具有不同的行为)。此外,enum类还提供了允许迭代所有枚举实例和查找枚举实例的方法。

C++:

代码语言:javascript
复制
typedef enum { Red, Yellow, Green } Colors;

void canCrossIntersection(Colors c) {
   return c == Green;
}

Java:

代码语言:javascript
复制
public enum Colors {
  RED(false),
  Yellow(false),
  Green(true) 
  ;

  Color(boolean b) { this.b = b; }
  private boolean b;

  public boolean canCrossIntersection() { return b; }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2080681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档