如何优雅的避免Java中:NullPointerException(空指针异常)

news/2024/10/18 14:23:12/

目录

1:空指针问题

2:解决方法

第一种方式:

第二种方式:

第三种方式:

第四种方式:


1:空指针问题

Java是没有指针的,所以我们常说"Java 指针"就是指"Java 的引用"。空指针就是空引用,Java空指针异常就是引用本身为空,但却调用了方法,这个时候就会出现空指针异常

public class demo {public static void main(String[] args) {Address address = new Address();User user = new User("xia", 12, address);String cityName = user.getAddress().getCity().trim();System.out.println(cityName);}
}Address:@Data
@NoArgsConstructor
@AllArgsConstructor
public class Address {private String city;private String address;
}User:@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private String name;private Integer age;private Address address;
}

2:解决方法

第一种方式:

使用if 来进行非空判断


/**使用if 条件判断,但是这种写法不优美
*/public class demo {public static void main(String[] args) {Address address = new Address();User user = new User("xia", 12, address);if (user != null){Address userAddress = user.getAddress();if (userAddress != null) {String city = address.getCity();if (city != null && !"".equals(city)){System.out.println(user.getAddress().getCity().trim());}}}}
}

第二种方式:

使用Optional.ofNuallable 来进行处理


public class demo {public static void main(String[] args) {Address address = new Address();User user = new User("xia", 12, address);String ored = Optional.ofNullable(user).map(User::getAddress).map(Address::getCity).map(String::trim).orElse("default");System.out.println(ored);}
}

第三种方式:

使用Assert 断言

public class demo {public static void main(String[] args) {Address address = new Address();User user = new User("xia", 12, address);getUserCity(user);try {TimeUnit.SECONDS.sleep(10);} catch (InterruptedException e) {throw new RuntimeException(e);}getUserCity(null);}public static void getUserCity(User user){Assert.notNull(user,"user is null");Address address = user.getAddress();Assert.notNull(address,"address is null");String city = address.getCity();System.out.println(city);}
}

第四种方式:

使用@Nullable 注解(代码会有提示)


public class demo {public static void printString(@Nullable String str){System.out.println(str.toString());}@Nullablepublic static String getString(){return null;}public static void main(String[] args) {Address address = new Address();String str = null;printString(str);getString().toString();User user = new User();System.out.println(user.getAddress().getCity());}}

提示:


http://www.ppmy.cn/news/702508.html

相关文章

微信能定时发朋友圈吗?

你还在担心今天的朋友圈忘记发吗?还是说错过了发圈的好时间呢? 其实这些都是可以不用担心,看这里你就可以提前设置朋友圈,定时发送,不用愁对着手机发朋友圈,不用担心错过时间!对 还支持一键多…

尤里先生查看陌生人朋友圈教程_微信怎么看陌生人朋友圈 强看陌生人朋友圈教程...

微信里面要是不加好友的话一般情况是看不到朋友圈的呢,但是某些用户还是想要看到朋友圈,这个要怎么解决呢?下面小编就告诉你! 类别:生活服务 大小:3.46M 语言:简体中文 评分:10…

微信朋友圈测试用例

思维导图编写:

企业微信客户端API分享微信朋友圈使用过程及总结

前言:本篇文章我们将介绍使用企业微信客户端API分享微信朋友圈中所遇到各式各样的API无效以及各机型的兼容问题。如果觉得作者写的不错,希望得到您的点赞/收藏/支持,如果有不同意见,欢迎下方评论区留言。 话不多说,直接上菜。 J…

mysql朋友圈设计_微信朋友圈技术实现设想

前提 微信朋友圈是我们每天都在用的功能, 但是如果让你来实现一个微信朋友圈, 你会如何做呢? 我来简单设想一下. 实现功能 发朋友圈 评论动态 查看朋友圈(只能查看好友的) 查看评论(只能查看共同好友的) 是不是看着很简单? 也没有几个功能嘛. so easy. 开始实现 数据库选用了…

微信小程序实现朋友圈图片展现形式

朋友圈图片展现形式: 1、一张宽图:宽度100%,高度自适应 2、一张长图:高度全部展示,有最大高度,宽度自适应 3、多张图片:除去一张,两张和四张的时候是一排两张,其他都是一…

微信朋友圈照片格式html,实测:微信朋友圈这样发图最清晰

经常刷朋友圈的你是否发现,有些人发的照片总是非常清晰,而自己发的照片一上传就变模糊,这到底是回事呢?当然,这肯定不是因为别人充了QQ币开通了会员,造成这种现象的根本原因在于,你上传的照片格…

微信朋友圈的测试用例

转载:https://blog.csdn.net/hchhan/article/details/83446695 1、点赞功能 1、网速对点赞的影响 2、点赞的人个数显示是否正确 3、共同好友能否看到点赞状态 4、能否显示点赞得人的头像和昵称,若能显示是否正确 5、一行显示几个点赞的头像 6、能否正常…