2017-08-22 5 views
-1

1)シングルトンはクラスが1つのインスタンスを持つことを意味します。民間の建設業者がいる。反射以外のオブジェクトを作成する方法はありません。サブクラス化はありません。 私は自分のシングルトンclassthenクラスをクローンしたい場合は、Cloneableを実装し、clone()をオーバーライドする必要があります。 私のシングルトンクラスにCloneableインターフェイスを実装するつもりはありません。 それでクローニングが私のシングルトンを破壊する方法。これは正しいです。いくつかを明確にしてください。もし間違っていれば。クローニングがシングルトンを破壊する方法

何がclonenotsupported例外をスローする必要がありますか。

+0

あなたが求めていることは本当に明確ではありません。あなたがシングルトンを持っているとき - それを直列化するか、またはそれを複製可能にする**ポイントがありませんか? – GhostCat

+0

私はチュートリアルのいくつかを私はクローニングのように見えた、反射とシリアライズシングルトンを破る。リフレクションを使うことで、コンストラクタをsetアクセス可能に設定することができ、オブジェクトiを作成することができます。しかしクローン化とシリアライゼーションの場合、ホーが壊れます。私のシングルトンクラスは誰でも使えますが、変更コードはありません。どのように壊れているのか。私は今あなたが何を聞いているか考えていると思います。 –

+0

誰かがあなたのコードを壊したいなら、それを防ぐことはできません。シングルトンをクローン化できないようにするか、シリアライズ可能にするだけです。そのようなことからの保護に時間を費やさないでください。 – GhostCat

答えて

0

Cloneableを実装し、clone()をオーバーライドしてCloneNotSupportedExceptionをスローする理由はありません。オブジェクト。 Cloneableインターフェイスが存在しない場合、Cloneは期待を捨てます。

列挙型を使用してシングルトンクラスを作成する正しい方法は、私の好きなJavaブック "Effective Java"で参照できます。それをお読みください。

+0

ありがとうございます。これはマルチスレッド環境でも機能します –

+0

マルチスレッド環境でenumアプローチを使用していますか? – JTeam

関連する問題