私は初心者です。私のオブジェクトのコピーを作成する
のは、私はクラスfoo
を持っており、オブジェクトfoo first
を作成したと言うと、それにいくつかのデータを入れてみましょう:
foo first = new foo();
first.data="mydata";
私はその後、別のオブジェクトfoo second
を作成し、それは同じ内容(ただし、同一のメモリを持つようにしたいです場所)はfirst
です。それを達成するために私は次のことをすることはできますか?
foo second = new foo();
second = first;
それとも、これはちょうど同じメモリアドレスにfirst
とsecond
を設定し、私は効果的にメモリ内の単一のオブジェクト上に2つのハンドルを取得していますか?
私はオブジェクトのクローンについて読んで、それはあまりにも複雑に思えます。 foo second = new foo();
に新しいfoo
を定義する手間を掛けてから、コンパイラはsecond = first;
が最初のものだけを指し示すのではなく、全体をコピーしようとしていることを認識すべきです。それはどういう仕組みですか?
私の質問です:なぜこれはどのように動作しないのですか?上記のようなコンパイラの設定の欠点は何ですか?
「オブジェクトのクローンについて読むと複雑すぎるようです」 - うーん、あなたはそれについてもっと知る必要があるでしょう。私は 'clone()'で[copy ctor](http://www.javapractices.com/topic/TopicAction.do?Id=12)をお勧めします。また、[accessors/mutators](http://stackoverflow.com/a/15711958/2071828)を直接変数アクセスよりも使用することをお勧めします。 –
* "それはどのように機能するのですか?" *そうであれば、他のユーザーがオブジェクトを複製するのに "複雑な"ものを書いているのはなぜだと思いますか? – Tom
@Tom goot point!私は私の質問がむしろ「なぜこれがどのように機能するのか」ということにはならないと思いますか? – Kagaratsch