Java メソッドでフラグを指定するためのベスト プラクティスは何ですか?
次のように、int をビットフィールドとして使用する SWT を見てきました。
(「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 のエレガンスさを好みます。
他に選択肢はありますか、それとも基本的にこれがあなたが選ばなければならない2つの味ですか?