「Javaでオブジェクトを作成する方法はいくつありますか」について読んだとき。
私は4つの方法を見つけました:
- 新しい演算子を使用したオブジェクトの作成。
- クローニング
- シリアル化
- 反射。
新しくて熟考することで、私はこれらの2つの方法で大丈夫です。
私の質問は:
オブジェクトを作成するさまざまな方法として、クローン作成とシリアル化を考えるのはなぜですか?
「Javaでオブジェクトを作成する方法はいくつありますか」について読んだとき。
私は4つの方法を見つけました:
新しくて熟考することで、私はこれらの2つの方法で大丈夫です。
私の質問は:
オブジェクトを作成するさまざまな方法として、クローン作成とシリアル化を考えるのはなぜですか?
ここで非常に重要な点は、オブジェクトの逆シリアル化では、プロセスにコンストラクターが関与しないことです。これが、オブジェクトを作成するための明確な方法である理由です。これはクローン作成にも当てはまります。このメソッドObject.clone
は、コンストラクターを使用せずに、JVMマジックによって新しいオブジェクトを作成します。new
実際、リフレクションは特定のコンストラクターを含むプレーンバニラオブジェクトのインスタンス化を呼び出すためのわずかに異なる方法であるため、これら2つの方法とリフレクションの間にははるかに大きな違いがあります。
オブジェクトのクローンを作成する場合、それは、元のオブジェクトとは異なるメモリ部分にあるものを処理していることを意味します。はい、それらは同じプロパティを持っているかもしれませんが、それらは2つの異なるメモリブロックを持つ2つの異なるポインタです。
オブジェクトのシリアル化を解除すると、以前は存在しなかったオブジェクトが存在します。シリアル化してすぐにアンシリアル化しても、元のオブジェクトから独立して存在します。