Я сейчас пишу программу на Джаве, использующую рекурсию. Сам длинный код включать в вопрос не буду, но я сделал небольшой пример, показывающий суть проблемы.
Я создал класс с конструктором.
Затем я создал объект класса, но не инициализировал его.
Дальше функция вызывает рекурсивную функцию, которая должна инициализировать этот объект и передает его в аргументе. Самой рекурсии тут нет, потому что на проблему это не влияет.
Рекурсивная функция инициализирует объект. После чего основной объект все так же и остается пустым. Вывод его значения выдает null pointer exception. В чем дело, и как это исправить?
public class Test
{
private class Node //создаем сам класс
{
int value;
public Node(int number) //Конструктор
{
value = number;
}
}
public Node root; //Создаём объект
public void assign(int value)
{
assign(value, root); //Передаем этот объект как аргумент
System.out.println(root.value); //Null pointer exception
}
private void assign(int value, Node newNode)
{
newNode = new node(value);//Инициализируем
}
}
Разве root и newNode не должны быть одной и той же ячейкой памяти?
Когда я делаю
newNode==root
я получаю true.
PS. Я не из России и с русскоязычной терминологией знаком слабо. I was doing my best to translate my question.