Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是;“安全”;在Collections.toArray()JavaDoc中是什么意思?_Java - Fatal编程技术网

什么是;“安全”;在Collections.toArray()JavaDoc中是什么意思?

什么是;“安全”;在Collections.toArray()JavaDoc中是什么意思?,java,Java,当我阅读java源代码时,我在集合界面中发现,将是安全的 返回的数组将是“安全的”,因为此集合不维护对它的引用。(换句话说,即使此集合由数组支持,此方法也必须分配新数组)。因此,调用方可以自由修改返回的数组 我不明白它的意思,你能给我举个例子吗?当然可以: List<String> list = Arrays.asList("foo", "bar", "baz"); String[] array = list.toArray(new String[0]); array[0] = "q

当我阅读java源代码时,我在集合界面中发现,将是安全的

返回的数组将是“安全的”,因为此集合不维护对它的引用。(换句话说,即使此集合由数组支持,此方法也必须分配新数组)。因此,调用方可以自由修改返回的数组

我不明白它的意思,你能给我举个例子吗?

当然可以:

List<String> list = Arrays.asList("foo", "bar", "baz");
String[] array = list.toArray(new String[0]);
array[0] = "qux";
System.out.println(list.get(0));  // still "foo"
List List=Arrays.asList(“foo”、“bar”、“baz”);
String[]数组=list.toArray(新字符串[0]);
数组[0]=“qux”;
System.out.println(list.get(0));//还是“福”
此“安全”并非“绝对安全”

如果修改元素的字段,列表将随
toArray()
返回的数组而更改。但是,如果将其指向另一个引用,列表将不会随数组而更改

原因是
toArray()
返回一个包含对象内存地址的数组

更改元素的内容

ArrayList a=新的ArrayList();
a、 增加(新学生(“莎拉”,17岁));
学生[]s=a.toArray(新学生[0]);
s[0].setName(“Lily”);
System.out.println(a.get(0)=s[0])//真的
更改参考

这是源代码注释的“安全”

ArrayList a=新的ArrayList();
a、 增加(新学生(“莎拉”,17岁));
学生[]s=a.toArray(新学生[0]);
s[0]=新生(“莉莉”,20岁);
System.out.println(a.get(0)=s[0])//假的

您所说的安全是什么意思?线程安全?@Julien他可能是“安全”的意思,因为此集合不维护对它的引用。@jbabey是的,你是对的,对不起,我的英语不好,谢谢you@Julien您好,因为我读了源代码,看到上面写的注释会很安全,所以我不明白