【问题标题】:Java enum giving an error?Java枚举给出错误?
【发布时间】:2012-02-08 18:40:22
【问题描述】:

当我尝试给我的枚举赋值时,它给了我这个错误:

枚举状态中的构造函数状态不能应用于给定类型; STATUS_OPEN(0),

为什么会发生这种情况,我该如何解决?

到目前为止,这是我的代码:

 public enum Status 
 { 
     STATUS_OPEN(0),  
     STATUS_STARTED(1),  
     STATUS_INPROGRESS(2),  
     STATUS_ONHOLD(3),  
     STATUS_COMPLETED(4),  
     STATUS_CLOSED(5);  

 }

我正在通过命令提示符使用记事本和 JDK - 目前我不想使用 netbeans 或 eclipse。

我在关注这个网站:link

我在 Google 上四处搜索,但我无法真正找到为什么会发生此问题或如何通过搜索错误来解决它。

【问题讨论】:

  • 这些值是枚举序数的默认值。您可以删除它们,并使用 ordinal() 获得相同的值。
  • 嗯,是的,我确实读到了……虽然我实际上不想从 0 开始(我只是在测试它),我想从 1 开始。但是谢谢: )
  • 当你得到它们时你可以增加它们......好吧,我在开玩笑:P
  • @EvertonAgner 哈哈!啊哈,谢谢,我试试看;)

标签: java enums


【解决方案1】:

你需要给枚举添加一个构造函数。

public enum Status {
   STATUS_OPEN(0),  
   STATUS_STARTED(1),  
   STATUS_INPROGRESS(2),  
   STATUS_ONHOLD(3),  
   STATUS_COMPLETED(4),
   STATUS_CLOSED(5);

   private final int number;
   Status(int number) { 
       this.number = number;
   }

   public int getMagicNumber() { return number; } 
}

这将解决您的语法问题,但是您希望用这个数字实现什么目标?枚举经常被用来代替数字的需要。

【讨论】:

  • 而且至少要从外面检查号码。
  • 好的。我仍然收到多个错误。它说枚举中的构造函数状态不能应用于给定类型 STATUS_OPEN(0) 等...每个错误都相同...
  • 哦,没关系,我做错了什么。因此它给出了这些错误。我现在明白了。好的,谢谢!
  • @Peter Gwiazda,我会确保添加,感谢您的反馈 :)
【解决方案2】:

您需要declare status instance variableconstructor。像这样

public enum Status 
 { 
        STATUS_OPEN(0),  
        STATUS_STARTED(1),  
        STATUS_INPROGRESS(2),  
        STATUS_ONHOLD(3),  
        STATUS_COMPLETED(4),  
        STATUS_CLOSED(5); 

       private int status;

       private Status(int status){
        this.status = status;
       }

     public int getStatus(){
       return this.status;
      } 
 }

【讨论】:

  • 没有 getter 是没用的
  • 我认为 OP 可以包含:P,反正我已经包含了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多