为什么Enum被认为比常量更安全?

Joh*_*ohn 3 java enums type-safety

在我们的示例中,我们可以选择定义一个Enumerated Type,它将限制可能的赋值(即改进的类型安全性):

public class OfficePrinter {

public enum PrinterState { Ready, OutOfToner, Offline };
public static final PrinterState STATE = PrinterState.Ready;
}

static final char MY_A_CONST = 'a';
Run Code Online (Sandbox Code Playgroud)

小智 17

想象一下这两个方法签名:

void rawF(char someFlag);

void enumF(MyFlags someFlag);
Run Code Online (Sandbox Code Playgroud)

后者更具限制性,因为只MyFlags允许有效值.在前一种情况下,任何字符可以传递 - 即使只使用了"常量"中定义的值.

快乐的编码.