0
public static void Method1(String a)
{
    List<DataBean> list = new ArrayList<DataBean>();
    list = StaticClass.masterList; // it has prepopulated list item


    for (JavaBean bean: list) {
        //Some condition and we call bean.setters 

    }

}

なぜここStaticClass.masterListで for ループで更新されるのですか?

4

2 に答える 2

2

リストへの参照は、コピーしているものであり、更新されません。

参照するオブジェクトで更新できるもの。

ノート:

List<DataBean> list = new ArrayList<DataBean>();

listこれは ではなく、単にリストListへの参照であるため、新しいオブジェクトに割り当てることができます。

masterList の浅いコピーを取得したい場合は、実行できます。

List<DataBean> list = new ArrayList<DataBean>(StaticClass.masterList);

このようにリストを変更しても、マスターは変更されません。ただし、DataBeans の 1 つを変更すると、これが表示されます。ディープコピーが必要な場合は、次のことができます

List<DataBean> list = new ArrayList<DataBean>();
for (DataBean db: StaticClass.masterList)
     list.add(new DataBean(db));
于 2013-10-08T14:11:19.347 に答える
2

listStaticClass.masterListは同じオブジェクトを参照するためです。

そのため、任意のオブジェクトでセッターを呼び出すと、同様listに変更が表示さStaticClass.masterListれます。

于 2013-10-08T14:11:29.360 に答える