带有可选

时间:2017-02-28 18:53:51

标签: nullpointerexception java-8 optional

我是选择新手并尝试理解为什么我在这一行收到空指针异常。

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块)来处理这个问题,但我特别试图理解选项并使用它们的功能来实现修复。

0 个答案:

没有答案