处理避免 NullPointerException 的链式方法调用 - 哪种方法最好?
让我们想象一下这样的场景: 3 class Meeting, Room, Projector
一个会议可能已经设置了一个房间,并且里面可能有一个投影仪。
现在假设我想知道投影仪的型号是什么。最自然的事情是做类似的事情
Meeting meeting = someMethod();
return meeting.getRoom().getProjector().getModelName();
此代码可以正确返回投影仪的型号名称,不幸的是,此代码也可能导致异常:java.lang.NullPointerException如果包含在根类 Meeting(甚至是 Meeting 类)中的类之一为空。
为了防止这个问题,并在最坏的情况下获得一个默认值,我们应该检查每个调用的返回值。
Meeting meeting = someMethod();
if (meeting != null) {
Room room = meeting.getRoom();
if (room != null) {
Projector projector = room.getProjector();
if (projector != null) {
return projector.getModelName;
}
}
}
return "No Projector Exist";
现在的代码非常讨厌。
处理这种避免 NullPointerException 的链式方法调用的最佳方法是什么?