項目3(「専用コンストラクタまたは列挙型でシングルトンプロパティを強制する」)のブロッホ州として、単一要素の列挙型が最適な方法です。シングルトンを実装します。残念なことに、古いプライベートコンストラクタパターンは、非常に広まっており、多くの開発者が列挙型シングルトンを作成するときに何をしているのか理解していないという点があります。Java enumシングルトンのアノテーション
クラス宣言の上の単純な// Enum Singleton
コメントは役に立ちますが、後で別のプログラマーが列挙型に2番目の定数を追加してシングルトンプロパティを破棄する可能性が残っています。プライベートコンストラクタのアプローチが持つすべての問題については、私の意見では、enumシングルトンよりもいくらか自己記述性が高いと言えます。
私は、enum型がシングルトンであり、コンパイル時にenumに1つの定数しか追加されないことを保証する注釈が必要だと思います。
@EnumSingleton // Annotation complains if > 1 enum element on EnumSingleton
public enum EnumSingleton {
INSTANCE;
}
公共の図書館で標準のJavaのアノテーションをどこからでも実行できますか?それとも、Javaの現在の注釈システムの下で私が不可能なことを求めているのですか?私が使用している
UPDATE
回避策の一つは、私が実際に自分の注釈を転がりを気にすることを決定し、少なくともまで、INSTANCE
場の正面に@SuppressWarnings("UnusedDeclaration")
を置くことです。コードを単純な列挙型とは区別して見せかけることはまともです。
私の視点から見ると、最も良い方法は、まずシンプルで明瞭でなければなりません。 – kapand