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