在Java中以这种方式使用枚举有什么问题?

时间:2016-08-29 07:32:51

标签: java syntax enums

public enum Numbers{
    One {
        public String getDigit(){
            return "1";
        }
    }
        ,

    Two {
        public String getDigit(){
            return "2";
        }
    }
        ,
    Three {
        public String getDigit(){
            return "3";
        }
    }

};  

public static void main (String[] args) throws java.lang.Exception
{
    Numbers xyz = Numbers.One;
    System.out.println(xyz.getDigit());
}

上面的代码抛出错误:

Main.java:38: error: cannot find symbol
        System.out.println(xyz.getDigit());

出现此错误的原因是什么?在每个常量的枚举中调用声明方法的正确用法是什么?

1 个答案:

答案 0 :(得分:2)

您只在枚举常量 getDigit()OneTwo上定义了方法Three,但未在枚举{{}上定义1}}本身。

如果你想在main方法中执行Numbers,那么你也需要在枚举类本身中使用该方法。您可以保留xyz.getNumbers()

在那里定义它:

abstract

当然,在你非常简单的例子中,最好在枚举public enum Numbers{ One { @Override public String getDigit(){ return "1"; } }, Two { @Override public String getDigit(){ return "2"; } }, Three { @Override public String getDigit(){ return "3"; } }; // Define the `getDigit()` method on the level of the enum itself too! public abstract String getDigit(); }; 中完全实现它,如:

Numbers

但如果您的逻辑很复杂,那么您可以在枚举实例本身上覆盖该方法。