java.util.Collections.reverse()是如何工作的?
请参阅的文档 我不明白Java方法如何只能按值传递,但允许以下情况:java.util.Collections.reverse()是如何工作的?,java,collections,methods,static,Java,Collections,Methods,Static,请参阅的文档 我不明白Java方法如何只能按值传递,但允许以下情况: public static void reverse(List<?> list) 公共静态无效反向(列表) 它如何更改通过参数传递的原始对象?尤其是当通过参数传递的所有对象都是通过值传递的时候?这是否意味着只传递对象的副本,因此只能返回引用?既然我们返回的是void,我们如何更改传递的原始对象 一个非常困惑的爪哇学徒 对列表的引用按值传递 调用方和reverse()方法都引用了相同的列表。除了Andy的答案之
public static void reverse(List<?> list)
公共静态无效反向(列表)
它如何更改通过参数传递的原始对象?尤其是当通过参数传递的所有对象都是通过值传递的时候?这是否意味着只传递对象的副本,因此只能返回引用?既然我们返回的是void,我们如何更改传递的原始对象
- 一个非常困惑的爪哇学徒
调用方和
reverse()
方法都引用了相同的列表。除了Andy的答案之外:
将引用的值传递给列表,并且不能更改原始引用。这是为了证明:
public static void main(String[] args) throws Exception {
List<Integer> list = Arrays.asList(1, 1, 1);
test(list);
System.out.println(list);
}
public static void test(List<?> list) {
list = Arrays.asList(2,2,2);
}
publicstaticvoidmain(字符串[]args)引发异常{
List=Arrays.asList(1,1,1);
测试(列表);
系统输出打印项次(列表);
}
公共静态无效试验(列表){
list=Arrays.asList(2,2,2);
}
尽管我们在测试方法中将[2,2,2]指定给列表,但它仍然打印[1,1,1]
它如何更改通过参数传递的原始对象
传递引用时,不能传递对象
尤其是当通过参数传递的所有对象都是通过值传递的时候
引用是按值传递的,而不是按对象传递的
这难道不意味着只传递对象的一个副本吗
只传递引用的副本
因此只能返回一个引用
引用是唯一没有返回的内容
既然我们返回的是void,我们如何更改传递的原始对象
您不能更改参考,但可以更改参考点的位置。查看其位置!您正在按值传递引用。