java - 为什么 Java 允许枚举常量的代码块?

标签 java enums

我突然输入了一个 Pokemon 类型的枚举

public enum Type {

    NORMAL () { // This is the question. Why does Java allow this?
        int x = 10; // Only accepts variables?
    };

    Type () {}

}

这段代码编译正确。

常量的代码块有什么用?

最佳答案

枚举中的代码块允许您覆盖枚举类型中定义的方法。例如

enum Foo {
    PEAR,
    BANANA() {
        @Override
        public void doFoo() {
            System.out.println("Banana foo");
        }
    },
    APPLE,
    GRAPE;

    public void doFoo() {
        System.out.println("Default foo");
    }
}

这里 Foo.BANANA.doFoo() 会生成 "Banana foo",同时在任何其他 上调用 doFoo() Foo 会生成 "Default foo"

关于java - 为什么 Java 允许枚举常量的代码块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27395666/

相关文章:

java - Android Json数组数据错误并且无法从json数组索引中查找或获取数据

java - 让线程从主线程等待

c# - 具有泛型类型的接口(interface)中的枚举返回函数出错

Java 从 3 个不同的枚举中获取随机值

java - 有没有更好的方法从 Java 中的 Enum 获取 String[] ?

java 枚举 getter setter

java - Tomcat 7 中 Grails 应用程序的第二个实例中的 IllegalStateException

java - 防止加速器在输入子项时触发

java - 我对 java 线程和 KeyEvents 有疑问吗?

java - 如何将枚举与命令行参数一起使用?