2

これは、別のクラスのインスタンス変数によって返される ArrayList の使用に関するものです。

Class A {

    //assigned list of string to it.
    private List < String > newAl;
    //returns the list
    public List < String > getList() {
        return newA1;
    }
}

Class Test {

    public void go() {
        List < String > list = a.getList();
        list.add("");
    }

}

リストを取得してリストを操作すると、テストクラスで.参照のため、クラスAリストも操作されました.Aがサードパーティコードの一部である場合.元のオブジェクトが影響を受けないようにテストクラスでコードを修正するにはどうすればよいですか?

4

1 に答える 1

2

ArrayList コンストラクターはCollection を取るので、それを使用できます。

List<String> list = new ArrayList(a.getList());

このようにした方が良いと思いますが、何をしているかによっては、getter で新しい List を構築したい場合があります。これは、タイプの非表示にも役立ちます。

于 2013-05-21T05:10:34.783 に答える