В трассировке стека для типичного NPE вам дается номер строки, на которой он произошел.Таким образом, предполагая, что System.out.println(c1.returnChain().returnChain().returnChain().returnChain());
находится на строке 144 (только что выбранный случайным образом), ваша трассировка стека NPE должна выглядеть примерно так:
java.lang.NullPointerException
at your.package.Chain(Chain.java:144)
Итак, если вы помещаете свой цепной вызов в несколько строк, он должен показать вамисключение:
Я написал этот маленький пример:
package bla;
public class Something {
public static int count = 0;
public Something get() {
if(count == 2) {
return null;
}
++count;
return new Something();
}
public static void main(String[] args){
Something something = new Something();
Something test = something.get()
.get()
.get()
.get() // Should throw NPE
.get()
.get();
}
}
И он дал мне NPE говорит: в bla.Something.main (Something.java:18) - именно там, гдеNPE произошел в цепочке.
Снимок экрана ...