如何在Java中将对象的引用作为参数返回

Jon*_*onN 7 java reference parameter-passing

虽然我已经编写了C,C++和C#多年,但我只是表面上熟悉Java.通过Java学院项目帮助我的Comp Sci子,他需要从Java中的方法返回对两个对象的引用.我建议将一个作为函数值返回,将第二个作为参考.他不知道该怎么做.我做了一点研究,意识到这可能是不可能的.我的问题是在Java中,当一个方法需要返回一个对象的多个引用时,常用的方法是什么.这是我儿子案例中的具体例子.

// This method returns references to the head and tail objects from the passed in 
// linked list.  The head object is returned as the function value and the tail is 
// returned as a parameter.
public Static Node GetHeadTail(List list, Node tail)
Run Code Online (Sandbox Code Playgroud)

我意识到上面的代码在Java中不起作用,因为tail是对节点的引用,而在Java中引用本身是通过值传递的.在Java中处理这个问题最常见的方法是什么?我儿子的解决方案是为函数值返回一个2节点对象的数组.我说这是一个糟糕的解决方案,因为它没有记录数组中每个元素的含义.另一种解决方案是创建一个包含头部和尾部引用的对象.然而,在特定示例中,头指针是最感兴趣的,并且如果返回对象,则如果他们想要的只是头部,则会为该方法的调用者创建不期望的编码开销.

Asa*_*aph 2

在这种情况下,java 程序员通常会创建一个具有 2 个成员的类:headtail。这将是该方法的返回类型getHeadTail(List list)