Java Objects.requireNonNull
在学习java动态代理,看到Proxy类中Objects.requireNonNull(T)
及Objects.requireNonNull(T obj, String message)来判断传入方法的参数是否为null并抛出异常信息
例如:
public void doSomething(String customerName, Integer age) {Objects.requireNonNull(customerName, "customerName cannot be null");Objects.requireNonNull(age, "age cannot be null");...
}
但这和使用if(obj==null)判断是否为null的有什么差别呢
其实javaAPI文件就有说明了,主要就是用来验证方法输入参数是否为null,例如之前通常写法如下:
public Foo(Bar bar) {if(bar == null) {throw new NullPointerException();} else {this.bar = bar;}
}
有这个方法泽可以写为:
public Foo(Bar bar) {this.bar = Objects.requireNonNull(bar);
}
一旦传入的参数为null,会抛出NullPointerException
Objects.requireNonNull(T)
及Objects.requireNonNull(T obj, String message)
是Java 7才加入的工具类,源码如下:
public static T requireNonNull(T obj) {if (obj == null)throw new NullPointerException();return obj;
}public static T requireNonNull(T obj, String message) {if (obj == null)throw new NullPointerException(message);return obj;
}
若传入的参数不为null,则返回原参数,因此可确保传入的参数不为null
简言之就是不需要每次都要自己用if()判断传入参数是否为null了,
好处是可读性佳,从名称就可以清楚知道的接收得参数应为null,且可直接给定错误信息。搭配写在方法的开头位置,可链到fail-fast的设计目的
而java 8 可以用Optional.of(T val)替代,例如:
public Foo(Bar bar) {this.bar = Optional.of(bar).get();// orthis.bar = Optional.of(s).orElseThrow(() -> new NullPointerException("bar cannot be null"));
}
Java Objects.requireNonNull相关推荐
- java requirenonnull_Java null判断新方法:Objects.requireNonNull 你过用吗?
1.方法介绍 有时候,我们为了使得对象不为空,可以使用Objects.requireNonNull()方法对对象进行判断,方法参数: Objects.requireNonNull(T obj); Ob ...
- Objects.requireNonNull 方法说明
在写代码的时候,Idea经常会提醒我们可以使用这个方法来进行参数非空检查, 这个方法的源码也非常简单, 如下所示: /*** Checks that the specified object refe ...
- 深入挖掘为什么要使用Objects.requireNonNull方法
引入 在一次学习过程中,通过ImageIO.read方法访问本地图片的时候,IDEA给出了Warning并提出了改善建议: //源码为: bullet=ImageIO.read(ResourceMgr ...
- Objects.requireNonNull( )方法说明
Objects.requireNonNull( )方法在java.util.Objects中 作用就是判断一个对象是否为空 底层源码: /* @param obj 需要检测是否为空的对象* @para ...
- Java 快速深度克隆对象 [Faster Deep Copies of Java Objects]
最近深刻纠结于复杂对象的clone, 实在苦恼于写多个对象的clone函数,于是收集网上的deep clone方法,真是适合我这种懒人~~ The java.lang.Object root supe ...
- Generate Java objects for FpML using JAXB and Maven: The Easy Way!
http://www.stephennimmo.com/generate-java-objects-for-fpml-using-jaxb-and-maven-the-easy-way/ http:/ ...
- 【Java】java.util.Objects 工具类方法研究
[Java]java.util.Objects 工具类方法研究 Objects 与 Object 区别 Object 是 Java 中所有类的基类,位于java.lang包. Objects 是 Ob ...
- java.util.Objects 简介
java.util.Objects 类 包含了几个静态方法,可以实现对对象的比较.生成hash code之类的功能, 很多方法里考虑了对象是null的情况,在输入的参数是null时有特定的处理方式. ...
- Java中Objects类的方法介绍(已更新)
使用软件:eclipse 2019-2 jdk:11 首先,Objects类是属于Java的工具类,具体包的位置是java.Util.Objects.它是在jdk1.7版本中添加的一些用来检查的工具, ...
最新文章
- android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
- linux添加ssl信任根证书,linux系统添加根证书linux证书信任列表
- 程序员的十大谎言,你中了几个? | 每日趣闻
- android连接Mysql数据库之JDBC方式
- JVM学习01总体概述
- 【干货】吴恩达deeplearning.ai专项课程历史文章汇总
- 简单,方便,功能全的php分页类
- MFC基于单文档制作吹彩色泡泡程序
- elasticsearch_spring-data-elasticsearch 快速入门-Spring Boot+Elasticsearch
- 如何规划局域网IP地址
- POJ 3253 Fence Repair(修篱笆)
- 嵌入式开发之NorFlash 和NandFlash
- 纯流量卡(物联卡)的套路,你了解多少
- 人工智能现在的发展前景如何?
- 秀外慧中雒芊芊:站在陈天桥背后的女人
- Vertx DNS解析源码
- Acknowledgements致谢词
- 直流变频电机驱动的技术原理及特点
- GMap.net地图下载器
- ssm基于Android社区生鲜O2O订购系统设计与实现毕业设计源码231443
热门文章
- dijkstra java pre_Edsger Dijkstra经典言论 - CSDN博客
- 2016年Q2《网络安全创新500强》榜单解读
- [Wow addon]HudMap 4.3版本升级
- 分享iPhone新系统的新功能
- iOS学习笔记-068.手势识别02——捏合、拖拽、旋转手势
- hgame-2022-week4
- Hgame2021,web,week1
- 【产品】飞信V5.2.2体验
- LA租车买车攻略在洛杉矶租车时,只会说一个car可远远不够哦~
- 鸡卵清白蛋白偶联维生素A(VA-OVA),Vitamin A-Ovalbumin Conjugate