私はいくつかのコードを見ています。オブジェクトに加えられた変更が実際にそれらのオブジェクトまたはそれらのオブジェクトのコピーに対して行われたかどうかを確認したいと思います。オブジェクトまたはそのオブジェクトのコピーを変更していますか?
ここではサンプルです:
for(int i = 0; i < myList.size(); i++)
{
DataObject myItem = (DataObject)myList.get(i);
myItem.setString("someKey", "someValue");
}
はmyListは、データオブジェクトのリストであるので、私は目的が、リスト上のget()メソッドを呼び出した後のDataObjectに項目をキャストするのだったかわかりません。しかし、コンパイル時にどのように処理されるのだろうか?キャストは新しいオブジェクトを作成し、その新しいオブジェクトに対してsetString()メソッドが呼び出され、リスト内のオブジェクトには影響しませんか?または、myItemはリストの実際の項目を参照していますか?
ありがとうございました。
+1リストが内部的に何をするかわからないという点については、非常に良い点です。それが不変のリスト要素を使うもう一つの理由です。 – biziclop
ああ、私たちは皆、これがうまく動作するList実装であると仮定しています。しかし、get()メソッド*はコピーを返すことができます。しかし、それは非常にありそうもありません。しかし、キャスト自体は新しいオブジェクトを作成しません。いいですよ。 –
良い点!私が言及すべきは、 'myList'は、' DataObject'型のオブジェクトに対して 'getList()'メソッドを呼び出すことによってコード内で先に宣言されました。 – Poosh