在 Java 方法中指定标志的最佳实践是什么?
我见过 SWT 使用 int 作为位域,例如:
(示例部分来自“Effective Java, 2nd Ed.” 第 159 页):
public class Text {
public static final int STYLE_BOLD = 1 << 0; // 1
public static final int STYLE_ITALIC = 1 << 1; // 2
void printText(String text, int flags) {
}
}
你的客户电话看起来像:
printText("hello", Text.STYLE_BOLD | Text.STYLE_ITALIC);
..但不鼓励这样做,因为您可以将来自不同类的标志(int 值)混合在一起而无需任何编译器检查。
在同一本书(“Effective Java”)中,我看到了 EnumSet 的使用,但随后您的用户调用变为:
printText("hello", EnumSet.of(Style.Bold, Style.ITALIC));
我觉得这有点冗长,我更喜欢 SWT 的优雅。
还有其他选择吗,或者这基本上是您必须选择的两种口味?