是否可以在Java中创建以下静态void方法?
public static void reverse(LinkedList<String> linkedlist)
{
//Code would go here...
}
据我所知,由于Java是按值传递的,这是不可能的,对吗?
答案 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 value,http://www.javaworld.com/javaqa/2000-05/03-qa-0526-pass.html