0
按值傳遞 - 通過引用 - 我一直在C++中執行此操作。但我想知道java的行爲。Java:返回實際對象與返回參考
我正在寫一個BST和變出以下方法:
private Node<T> get_node(T data)
{
Node<T> tmp = null;
if (isEmpty())
{
return null;
}
tmp = root;
while (tmp != null)
{
//System.out.println("tmp is " + tmp.getData());
if (compare(tmp.getData(), data) < 0) //data is greater
{
System.out.println("get right");
tmp = tmp.getRight();
}
else if (compare(tmp.getData(), data) < 0) //tmp is greater
{
System.out.println("get left");
tmp = tmp.getLeft();
}
else if (compare(tmp.getData(), data) == 0) //we found it
{
System.out.println("get left");
return tmp;
}
}
return null;
}
這是BST類本身 - 我使用這個輔助函數來建立一個新的BST在「本」。
問題是,我不認爲這種方法實際上是返回實際節點。我認爲它正在返回一個副本或類似的東西對我沒用。我真的希望這個返回實際節點。
這是如何完成的?這完成了嗎?
我想我的問題是,在這種情況下 - Java是「之類的」傳遞引用。在語言中是否還有一些方法可以接收實際的對象,還是隻有引用。 – PinkElephantsOnParade
你爲什麼認爲它會返回一份副本? –
這將返回對實際對象的引用,您可以使用所有預期的功能,除非getleft和getright方法執行復制對象等有趣事情。 – user2259824