5

在我们的示例中,我们可以选择定义一个 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';
4

3 回答 3

18

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

void rawF(char someFlag);

void enumF(MyFlags someFlag);

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

快乐编码。

于 2010-10-19T21:01:54.570 回答
1

您可以将 MY_A_CONST 传递给任何采用 char 的方法。您还可以将任何其他 char 传递给采用 char 的方法。

您可以将 Ready、OutOfToner、Offline 和 null 传递给采用 PrinterState 的方法。

您可以通过限制可以传递给方法(或分配给变量)的总值集来获得安全性。

于 2010-10-19T21:02:09.790 回答
1

使用enumover 常量有助于类型安全,因为如果一个函数接受一个枚举并且你传递它而不是枚举,编译器会抱怨。使用常量,您接受的数据范围相当大,其中大部分是无效的。

于 2010-10-19T21:03:13.287 回答