Java - 静态空方法 - LinkedList - 按值传递

时间:2013-04-19 03:43:58

标签: java linked-list pass-by-value

是否可以在Java中创建以下静态void方法?

public static void reverse(LinkedList<String> linkedlist)

{

//Code would go here...

}

据我所知,由于Java是按值传递的,这是不可能的,对吗?

2 个答案:

答案 0 :(得分:1)

如果你在讨论股票java.util.LinkedList类,那么编写这样的方法当然是可能的。事实上,已有一个:java.util.Collections.reverse(List<?> list)适用于任何可修改的列表(包括LinkedList)。它颠倒了列表中的元素。

如果您正在讨论自定义LinkedList类,则取决于类的实现方式。如果LinkedList对象只是一个链接的一系列节点和数据,那么不,你不能反转列表,因为你不能改变第一个元素;它需要更改linkedList个引用。您可以在方法内部执行此操作,但不会影响调用代码中的实际参数。这是传值的结果。

但是,java.util.LinkedList的结构不是这样的。节点是LinkedList对象本身的内部节点。对象引用不需要更改以更改所有元素的顺序。

答案 1 :(得分:1)

Java仅支持按值传递,但您发布的代码不会产生任何错误,因为它也是按值传递的。 参考这些链接Is Java "pass-by-reference" or "pass-by-value"?Are Java function parameters always passed-by-value?Immutable and pass by valuehttp://www.javaworld.com/javaqa/2000-05/03-qa-0526-pass.html