优雅的避免空指针的示例
public static void main(String[] args) { Object o = null; String s = String.valueOf(o); -- 不会出空指针 s = o.toString(); -- 空指针 System.out.println(s);}
public static String valueOf(Object obj) {return (obj == null) ? "null" : obj.toString();}
3) 使用null安全的方法和库 有很多开源库已经为您做了繁重的空指针检查工作。其中最常用的一个的是Apache commons 中的StringUtils。你可以使用StringUtils.isBlank(),isNumeric(),isWhiteSpace()以及其他的工具方法而不用担心空指针异常。
StringUtils方法是空指针安全的,他们不会抛出空指针异常
System.out.println(StringUtils.isEmpty(
null
));
System.out.println(StringUtils.isBlank(
null
));
System.out.println(StringUtils.isNumeric(
null
));
System.out.println(StringUtils.isAllUpperCase(
null
));
4) 避免从方法中返回空指针,而是返回空collection或者空数组。
这个Java最佳实践或技巧由Joshua Bloch在他的书Effective Java中提到。这是另外一个可以更好的使用Java编程的技巧。通过返回一个空collection或者空数组,你可以确保在调用如size(),length()的时候不会因为空指针异常崩溃。Collections类提供了方便的空List,Set和Map: Collections.EMPTY_LIST,Collections.EMPTY_SET,Collections.EMPTY_MAP。这里是实例。
public
List getOrders(Customer customer){
List result = Collections.EMPTY_LIST;
return
result;
}
你同样可以使用Collections.EMPTY_SET和Collections.EMPTY_MAP来代替空指针。
转载于:https://www.cnblogs.com/duenboa/p/6665339.html
优雅的避免空指针的示例相关推荐
- 报错空指针异常_Jdk14都要出了,还不能使用 Optional优雅的处理空指针?
作者:达西 出自:微信公众号"未读代码" 原文:Jdk14都要出了,还不能使用 Optional优雅的处理空指针? 1. 前言 如果你没有处理过空指针,那么你不是一位真正的 Jav ...
- Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参
1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...
- golang中的优雅中止
简介 按照一般的设计原则, 每个 HTTP 请求都是无状态的,因此大多情况下 Web 应用都很容易做水平扩展."无状态"也意味着 HTTP 请求发起重试的成本是很低的,从而使得 W ...
- 如何写出优雅的异常处理
本来是想来自己写一篇关于断言的使用,正好看到了一个这个全面的文章.嗯,转给大家学习! 作者:巨人大哥 来源:cnblogs.com/jurendage/p/11255197.html 背景 软件开发过 ...
- 优雅的点(2017网易校园招聘)---最详细的解答
时间限制:1秒空间限制:32768K热度指数:68123 算法知识视频讲解 题目描述 小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方.小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在 ...
- 从阿里跳槽来的工程师,写个try catch的方式都这么优雅!
大家好,我是老赵 背景 软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} fi ...
- 步进电机的8拍驱动函数示例
http://www.arduino.cn/thread-16151-1-1.html 在做arduino的步进电机实验时,很多人都是直接用IDE自带的stepper库来驱动步进电机.但是这个库只封装 ...
- [Tour of Go] Golang基础
Golang基础 看官网文档做的笔记.厌倦了每次捡起Go都要重看文档了. 官网的 Tutorials 大部分是一些使用Go进行开发的简单流程示例,我个人感觉是,按照按需自取的原则,稍微看一下,敲一下, ...
- ssm 异常捕获 统一处理_SpringMVC 统一异常处理介绍及实战
背景 什么是统一异常处理 目标 统一异常处理实战 用 Assert(断言) 替换 throw exception 定义统一异常处理器类 扩展 总结 <Java 2019 超神之路> < ...
最新文章
- 请在请求中携带deviceid参数_日常工作中最容易犯的几个并发错误,你中了几个?...
- ActiveMQ 消息持久化到Mysql数据库
- web安全---XSS漏洞之标签使用2
- 刚进职场的程序员,请万分珍重你的第一份工作,不要轻易辞职!
- 班图ubuntu linux 5.1相当好用,windows危险了!
- log4j的org.apache.log4j.PatternLayout
- [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程
- 在vue的项目中引入swiper插件
- 一文搞懂SPI通信协议
- Linux 压测工具 stress 安装下载
- c语言循环教案,C语言教学(七-上)for循环
- 写在《Python高手修炼之道》发行之前:选择一本好书,即是少走弯路
- python PyQt5程序运行界面无响应
- FTP是什么?FTP工具怎么用呢?
- 万能乘法速算法大全_小学数学各年级知识点和重点、难点大全,复习必备提纲!...
- IP多播(计算机网络-网络层)
- 使用python提取所有word文件中的所有图片
- 大话设计模式——饕餮盛宴
- JSP、Servlet、JDBC学习笔记
- html5中新增标签的兼容性如何设置,HTML5新标签的兼容性处理
热门文章
- 【chorme插件开发】第一节:chrome内核浏览器插件开发的说明
- springcloud的简单使用_微服务架构:初识Spring Cloud
- wsl2无法使用systemctl_Win 10 更新,Linux 内核的 WSL 2 开始上线
- QML工作笔记-在Row布局中如何进行稍许移动(图片Row布局会遇到)
- Linux学习笔记-用vc编写Liunx代码(vc只充当编辑器的功能)
- Qt学习笔记-编写简易的音乐播放器
- C/C++信息隐写术(二)之字符串藏入BMP文件
- mysql php示例,PHP操作MYSQL简单示例
- 尝试cython和openmp
- 计算机大致可以分为大型计算机嵌入式系统,计算机类型大致可以分为:大型计算机、、嵌入式系统三类...