Мне нужно создать «круговой список» объекта Th.T0, T1, T2, .., TN-1 Каждый объект имеет ссылку на одно право на него. Таким образом, T0 имеет ссылку T1 .... и TN-1 имеет ссылку T0.
class Th
{
private Th nextTh;
Th(Th n) {
nextTh=Th;
}
}
Inосновной метод я делаю это
Th[] th = new Th[N]; //Create the references
for (int i = 0; i < N; i++)
th[i]= new Th(th[(i+1)%(N)],first,shared,i,N,counter);
Как вы можете видеть, когда я = 0 в цикле for, я создаю новый объект Th и в конструкторе я передаю аргумент th[i+1]
(так что th[1]
) что в данный момент это ссылка на нулевой объект, но я создам его на следующем шаге i = 1.Фактически, когда внутри класса Th я ссылаюсь на nextTh и получаю NullPointerException
.
class Th {
....
doSomething() {
nextTh.foo(); //Throws NullPointerException
}
}
, я знаю, что Java передает параметры только по значению, из примитивов она делает копию, а для Object этопередает "копию ссылки (верно?).
Спасибо.