我是选择新手并尝试理解为什么我在这一行收到空指针异常。
BottomObj bottomObj = new bottomObj();//initialized bottomObj
Optional<Location> location = Optional.ofNullable(bottomObj).map(obj -> obj.getRootObj()).map(rootObjLocation -> rootObjLocation.getLocation());
BottomObj有一个RootObj实例变量,在这种情况下为null(因为我没有设置它并且构造函数没有设置它)。
如果我执行了这行
RootObj rootObj = bottomObj.getRootObj();
我会得到一个空指针异常。因此,我正在尝试使用上面的可选行来处理这种情况(即bottomObj没有RootObj的地方)来处理空指针异常。
我也试过这个:
Optional<Location> location = Optional.ofNullable(bottomObj).map(obj -> obj.getRootObj()).map(rootObjLocation -> rootObjLocation.getLocation()).orElseThrow(etc...throw some exception...);
我的程序每次都在getRootObj()函数中崩溃。为什么会这样?不应该选择处理这个吗?
注意,我知道我可以使用其他工具(例如try catch块)来处理这个问题,但我特别试图理解选项并使用它们的功能来实现修复。