9

グーグルで検索すると、たくさんのコードが見つかりました。しかし、それらのどれもが私が望むものを与えてくれました。通常の配列を不変にしたい。私はこれを試しました:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class test {

    public static void main(String[] args) {

        final Integer array[];

        List<Integer> temp = new ArrayList<Integer>();
        temp.add(Integer.valueOf(0));
        temp.add(Integer.valueOf(2));
        temp.add(Integer.valueOf(3));
        temp.add(Integer.valueOf(4));
        List<Integer> immutable = Collections.unmodifiableList(temp);

        array = immutable.toArray(new Integer[immutable.size()]);

        for(int i=0; i<array.length; i++)
            System.out.println(array[i]);

        array[0] = 5;

        for(int i=0; i<array.length; i++)
            System.out.println(array[i]);

    }
}

しかし、うまくいきません.5を配列[0]に割り当てることができます...この配列を不変にする方法はありますか?

4

3 に答える 3

1

null 要素を許可しない、高性能で不変のランダムアクセス List 実装であるGuava の ImmutableListを使用することもでき ます。変更可能な別のコレクションのビューである とは異なりCollections.unmodifiableList(java.util.List)、ImmutableList のインスタンスには独自のプライベート データが含まれ、変更されることはありません。

于 2013-06-15T11:37:52.267 に答える