【发布时间】:2013-06-15 11:09:00
【问题描述】:
用谷歌搜索,找到了很多代码。但是他们中的任何一个都给了我想要的东西。我想让一个普通的数组不可变。我试过这个:
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 分配给 array[0] ...有什么方法可以使这个数组不可变?
【问题讨论】:
-
与 C 不同,你不能。但是,您可以使用包装器。
-
让你的数组变量最终只会阻止分配一个新数组给它。据我所知,没有办法让它的值最终。
-
为什么不使用 ArrayList 或创建自己的包装器?
-
@zerocool 它可能是元素的集合,但不是 JDK 定义的
Collection