Java 在某些特定情况下,优先使用编译时常量而不是枚举

Java 在某些特定情况下,优先使用编译时常量而不是枚举,java,enums,Java,Enums,我正在阅读J.Bloch的《高效Java》,并提出了以下内容(Setcion关于枚举): 将多个行为关联到一个 单一方法。在这种相对罕见的情况下,请选择常数特定 用于枚举打开其自身值的方法 对我来说,使用编译时常量的情况并不清楚。你不能提供一个简单的例子来反映这一点吗?我认为这篇文章讨论的是以下两个方面的比较: void myMethod(MyEnum enum){ switch(enum){ case VALUE1: break; case VALUE2

我正在阅读J.Bloch的《高效Java》,并提出了以下内容(Setcion关于枚举):

将多个行为关联到一个 单一方法。在这种相对罕见的情况下,请选择常数特定 用于枚举打开其自身值的方法


对我来说,使用编译时常量的情况并不清楚。你不能提供一个简单的例子来反映这一点吗?

我认为这篇文章讨论的是以下两个方面的比较:
void myMethod(MyEnum enum){
    switch(enum){
    case VALUE1:
        break;
    case VALUE2:
        break;
    }
}


所以,他说常数指定方法只是一个包含开关盒的方法?@St.Antario不,常数指定方法是第二个代码块中的方法之一。看起来,我明白了。布洛赫在一节中说,如果枚举不在我们的控制之下,我们应该更喜欢打开枚举的值。现在我的理解正确了吗?最后一点可能应该是“打开
这个
的方法”,或者类似的东西。
enum MyEnum{
VALUE1(){
    protected void myMethod(){
        //body
    }
},
VALUE2(){
    protected void myMethod(){
        //body
    }
}
protected abstract void myMethod();
}