Javaは価値渡しです。参照渡しが必要な場合はどうすればいいですか?たとえば、次のコードでは、参照機構によるパスが必要です。
public class BinaryTree {
public TreeNode root;
public BinaryTree(){
root = null;
}
public TreeNode insert(TreeNode temp,int x){
if(temp == null){
temp = new TreeNode();
temp.key = x;
temp.left = temp.right = null;
return temp;
}
if(temp.key > x)
temp.left = insert(temp.left,x);
else if(temp.key < x)
temp.right = insert(temp.right,x);
return null;
}
}
insert
が root
で呼び出されたとき、その値を変更するために参照として渡される root
が必要です。しかし、これは値渡しであるため、Javaでは発生しません。 C/C
++では上記を簡単に達成することができました。これはJavaの欠点だとお考えですか?どのようにJavaでこのような問題を解決できますか?
ベストアンサー
Javaでは、参照型がある場合は参照が値渡しされます。
メソッドの内部では、渡されたオブジェクトを変更することができ、呼び出し元にはそれらの変更が表示されます。