Java 如何在方法的参数中设置空检查?

Java 如何在方法的参数中设置空检查?,java,nullpointerexception,Java,Nullpointerexception,像 这里setDetailsFromSegment()是我的方法,我想在使用java 8调用该方法之前检查参数是否为null。如果可能,您应该避免进行null检查 如果您可以更改getOriginDestinationList()和getFareList()您应该让它们返回。如果没有返回列表,则可以考虑使用AN。但要注意在何处使用和可选,在何处不使用。例如,见 如果无法更改方法的返回值,则必须在调用方法之前执行检查。这可能会有帮助 除此之外,您的代码还有一个问题,因为方法链接过多。您可能需要检查


这里
setDetailsFromSegment()
是我的方法,我想在使用java 8调用该方法之前检查参数是否为null。

如果可能,您应该避免进行null检查

如果您可以更改
getOriginDestinationList()
getFareList()
您应该让它们返回。如果没有返回列表,则可以考虑使用AN。但要注意在何处使用和可选,在何处不使用。例如,见

如果无法更改方法的返回值,则必须在调用方法之前执行检查。这可能会有帮助


除此之外,您的代码还有一个问题,因为方法链接过多。您可能需要检查每个方法的返回值。而且很难阅读。我不会用“x”作为变量名;-)

java-8中是否更改了空检查?那么,就这样做吧。有什么问题吗?但你真的不应该这么做。一个(至少看起来)返回列表的方法应该永远不会返回null。让它们返回一个空列表。正如JB Nizet所提到的,在调用此方法之前,可以很好地检查Null。关于列表,您还需要检查列表大小,否则您可能会遇到ArrayIndexOutOfBoundException。此外,您可能想了解有关Demeter定律的方法链接。@JBNizet ya,但getDetails可能并不总是提供productList,因此我必须验证它是否为空。它们不会返回null,但当我使用get时会返回null(0)他们将遇到ArrayIndexOutofBond异常我不返回列表,也不能更改列表的实现(即使其成为可选)。这些列表是从对象-->'getDetails'获得的。这是我发送请求后的响应。因此,该对象中的列表可能为null,也可能不为null!因此在作为参数传递时,我需要检查null指针和ArrayIndexOutOfBound。此外,变量名“x”只是一个伪名称。我也不会使用相同的;)然后,在调用setDetailsFromSegment之前,必须执行检查。我将把这两个调用转移到一个单独的方法中,在这个方法中可以应用所有必要的检查。你的电话可能看起来像“…=”setDetailsFromSegment(getOriginDestinationList(),getFareList());'。方法“getOriginDestinationList()”和“getFareList()”可以执行所有必要的检查(if语句),如果不存在结果,它们应该返回空列表。
x = setDetailsFromSegment(getDetails.getProductList().getProductDetails().get(0).getItinerary().getOriginDestinationList(),
                          getDetailsResponse.getProductDetailsList().getProductDetails().get(0).getFareList());