クラスを宣言するときに渡されるジェネリック型としてインスタンス変数のプロパティを持つ次のJavaクラスがあります。Javaはメソッドの引数としてジェネリック型のオブジェクトを渡します。
メソッドの引数として渡すプロパティを割り当てようとすると、引数自体の値を変更するとその値が変更されないようです。
コード:
public class BST<T extends Comparable<T>, S>{
private Node<T, S> bstRoot;
public Node<T,S> getRoot() {
return bstRoot;
}
public void setRoot(Node<T,S> root) {
this.bstRoot = root;
}
public boolean put(T key, S value){
Node<T,S> node = new Node<T,S>(key, value);
return put(node, bstRoot);
}
private boolean put(Node<T,S> node, Node<T,S> root){
if(root == null){
root = node;
}
else{
if(root.compareTo(node) < 0){
put(node, root.getRightChild());
}
else{
put(node, root.getLeftChild());
}
}
return true;
}
}
私は次の操作を実行した場合:
public class BSTTest {
public static void main(String[] args){
BST<Integer, String> bst = new BST<Integer, String>();
bst.put(10, "Hello10");
}
}
プットを行った後、bstRootではなく、キー10とNodeオブジェクトの値に設定されるので、まだnullです値Hello10。それは参照で渡すことはありませんか?
あなたが投稿したコードに 'BST'コンストラクタがありません。 – Eran