3

私はJavaを初めて使用し、リストにエントリを追加するときにクラスの新しいインスタンスを渡す必要があるかどうかを判断しようとしています。

CCustEntry entry = new CCustEntry();
List<CCustEntry> CustList = new ArrayList<CCustEntry>();
do
{
    // set all entry fields
    entry.id = [...];
    [fill other fields of entry from DB]

    // add entry (constructor copies entry)
    CustList.add( new CCustEntry( entry ) );

} while( C.moveToNext() == true );

または...newを削除して、次のようにadd()メソッドにエントリを渡すことはできますか?

   CustList.add( entry );

私はリストについて読んでいますが、以前よりも混乱しています。DelphiとC++から来ているので、構文は問題ありませんが、Javaの「文法」の中には、まだ頭を悩ませているものがあります。

助けてくれてありがとう。

4

2 に答える 2

3

エントリが変更されるかどうかによって異なります。エントリの浅いコピーを作成するBeanがあるように思われるので、のフィールドentryが変更される場合は、コピーを追加する必要があります。そうでなければ、新しいものを構築するためにメモリを浪費するだけです。

ここでは、ループ全体で同じエントリを使用しているように見えるので、コピーを作成する必要があります。それ以外の場合、リスト全体に同じオブジェクトが含まれます。つまり、各アイテムは同じオブジェクトです。

別のコメント:Javaでは、フィールドと値に小文字で始まる名前を付けるのが一般的です。

于 2013-03-21T00:18:29.517 に答える
3

毎回新しいインスタンスを作成しない場合は、同じインスタンスをリストに複数回追加することになります。これは、リストの1つのインデックスで要素を変更すると、他のすべての要素も同じ方法で変更されることを意味します(すべて同じインスタンスであるため)。別個であるが等しいインスタンスが必要な場合は、new毎回作成する必要があります。

于 2013-03-21T00:18:35.473 に答える