我有这段代码,并且我试图弄清楚使用Java 8避免空指针异常的最佳方法是什么?
promotion.forEach(item ->
item.getDiscount().getPromotions().forEach(promotion -> {
// logic code here
})
);
答案 0 :(得分:4)
避免NullPointerExceptions的最佳方法是避免使用空值。在您的示例中,请确保所有方法永远不会返回null。
您没有返回null,而是有几个选项:
答案 1 :(得分:3)
您是否正在考虑类似Optional的内容:
item.getDiscount().getPromotions().stream().forEach(promotion ->
Optional.ofNullable(promotion).ifPresent(p -> {
// logic code
} )
);
编辑:如果item.getDiscount()
可能为null,那么您可以尝试:
Optional.ofNullable(item.getDiscount()).ifPresent(d ->
d.getPromotions().stream().forEach(promotion ->
Optional.ofNullable(promotion).ifPresent(p -> {
// logic code
} )
)
);
答案 2 :(得分:2)
InitialContext ic=null;
CRUDStudentRemote bean=null;
@GET
@Path("getplayers")
@Produces({MediaType.APPLICATION_JSON})
public ArrayList<String> getPlayers() {
try{
ic=new InitialContext();
bean = (PlayerRemote)
ic.lookup("Projects/Player!ejb.PlayerRemote");
ArrayList<String> ls;
ls = bean.getFromTeam("teamA");
System.out.println(ls.size());
return ls;
}
catch(NamingException e){
System.out.println("error.");
e.printStackTrace();
System.exit(1);
}
return null;
}
您可以在逻辑代码中使用它们之前过滤掉所有null元素,以便只有非null元素才能运行逻辑代码。