失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java空指针异常和解决办法

Java空指针异常和解决办法

时间:2019-06-20 07:47:02

相关推荐

Java空指针异常和解决办法

目录

问题描述:尝试1:尝试2:使用Optional防止出现空指针异常引用

问题描述:

public class Main0419 {public static void main(String[] args) {String id = null;Item item = ItemService.getItemById(id);System.out.println(item.name);}private static class ItemService {public static Item getItemById(String id){return id.equals("1") ? new Item("iphone13"): null;}}static class Item{private String name;private String id;public Item(String name){this.name = name;}}}

return id.equals("1") ? new Item("iphone13"): null;报了空指针异常。

分析原因:id为null,一个null对象是没有equals方法的的。

尝试1:

修改为return “1”.equals(id) ? new Item("iphone13"): null;"1"自动封装为一个String对象,可以调用equals方法。

重新运行,依然报控指针异常:

分析原因:得到的item为空,item(null)没有任何属性,所以依然抱错。

尝试2:

在操作item属性之前应该判断对象是否为null。if(item!=null){ System.out.println(item.name); }

使用Optional防止出现空指针异常

总结以上两种出现空指针异常的的原因,都是访问了null对象的属性和方法。操作可能为空的对象之前,提前使用if进行判断,虽然可以解决问题。大量的if会降低业务代码的理解难度。java 8 提供了避免出现空指针异常的Optiona类,使用Optional的orElse()方法和map()方法可以降低空指针异常的发生。

public static void main(String[] args) {String id = null;Optional<Item> item = ItemService.getItemById(id);System.out.println(item.orElse(new Item()).name);}private static class ItemService {public static Optional<Item> getItemById(String id){return Optional.ofNullable( "1".equals(id) ? new Item("iphone13"): null);}}static class Item{private String name;private String id;public Item(String name){this.name = name;}public Item(){}}}

引用

[1] https://lw900925.github.io/java/java8-optional.html

[2] /chenping1993/article/details/120491115

如果觉得《Java空指针异常和解决办法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。