1. ホーム
  2. java

[解決済み] Singletonアノテーションを実装するにはどうすればよいですか?

2022-02-11 08:02:46

質問

繰り返しの質問かもしれませんが、よろしくお願いします。しかし、私は次のようなものを実装する必要があります。

@Singleton
public class Person {
}

これにより、Personオブジェクトのインスタンスは1つだけになります。

コンストラクタをprivateにするのも一つの方法です。しかし、これではSingletonアノテーションが冗長になってしまいます。

コンストラクタをプライベート化せずに、オブジェクトの生成を単一オブジェクトに制限することが本当にできるのか、よく分かりませんでした。

そんなことは可能なのでしょうか?

解決方法は?

アノテーションは、クラスのインスタンス化を防ぐことはできません。しかし、依存性注入フレームワークや単純なオブジェクトファクトリのようなものを実装するつもりなら、リフレクションを使ってアノテーションを読み、クラスが2回以上インスタンス化されないようにすることができます。

シングルトン・パターンをやめて、適切なDIフレームワークのような、よりモダンなソリューションに移行することも考えられます。