试图了解java enums的工作原理

时间:2014-11-18 18:05:39

标签: java

我编写了以下Java类,它基于Google Web Toolkit源代码的SAMPLES文件夹中的EXPENSES应用程序。代码如下。

我的目标是了解java enums的工作方式,我认为这可能是一个很好的起点。我已经浏览了有关ENUMS的互联网资料,我得到了基本概念。但是我仍然在努力理解这段代码。

这是我的代码:

public class Expenses {

    public static enum Approval {
        BLANK("", APPROVED("Approved"),DENIED("Denied"));

        /**
         * Get the {@link Approval} from the specified string.
         * 
         * @param approval the approval string
         * @return the {@link Approval}
         */
        public static Approval from(String approval) {
          if (APPROVED.is(approval)) {
            return APPROVED;
          } else if (DENIED.is(approval)) {
            return DENIED;
          }
          return BLANK;
        }

        private final String text;


        private Approval(String text) {
              this.text = text;
        }

        public String getText() {
              return text;
          }

        public boolean is(String compare) {
              return text.equals(compare);
          }

    } 

    public static final String[] DEPARTMENTS = {
          "Engineering", "Finance", "Marketing", "Operations", "Sales"};


}

Eclipse抱怨APPROVED和DENIED。

 The method DENIED(String) is undefined for the type 
     Expenses.Approval
    - The method APPROVED(String) is undefined for the type 
     Expenses.Approval

什么是BLANK(...)的事情?它是某种数据结构吗? 这有什么作用?


我正在寻找的是一种理解此代码的方法,并在尝试更多地使用此代码之前消除编译错误。

1 个答案:

答案 0 :(得分:2)

这是一个括号问题。添加换行符以提高可读性。

BLANK(""),
APPROVED("Approved"),
DENIED("Denied");