Java学习笔记21
来源:互联网 发布:算法工程师职业规划 编辑:程序博客网 时间:2024/06/14 20:45
Objects是Java 7新增的一个工具类,它提供了一些工具方法来操作对象,这些工具方法大多是“空指针”安全的。
Objects实现的方法如下:
requireNonNull(T)与requireNonNull(T,String)在源码中定义如下:
public static <T> T requireNonNull(T obj) { if (obj == null) throw new NullPointerException(); return obj; }
public static <T> T requireNonNull(T obj, String message) { if (obj == null) throw new NullPointerException(message); return obj; }
在使用上面requireNonNull(T)方法时,当传入的参数不为null时,返回参数本身,反之,抛出一个NullPointerException异
常。而requireNonNull(T,String)方法的作用是,传入的参数不为null时,返回参数本身,否则抛出message的
NullPointerException异常。
接着我们来看看isNull(Object)方法与nonNull(Object)方法在源码中定义如下:
public static boolean isNull(Object obj) { return obj == null; }
public static boolean nonNull(Object obj) { return obj != null; }
从上面的程序中可以看出isNull(Object)方法是判断传入的对象是否为null,为null返回true,否则false。nonNull(Object
obj)方法恰恰相反,判断传入的对象是否为null,为null返回false,否则返回true。
最后我们看下requireNonNull(T,Supplier<String>)方法:
public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) { if (obj == null) throw new NullPointerException(messageSupplier.get()); return obj; }
在这里传入一个Supplier接口实现类的对象,Supplier接口定义如下:
public interface Supplier<T> { /** * Gets a result. * * @return a result */ T get();}
因此requireNonNull(T,Supplier<String>)方法与前面介绍的两个requireNonNull方法相似,当传入参数不为null,返回参
数本身,否则引发NullPointerException异常。
看下requireNonNull(T,Supplier<String>)方法如何使用:
class User { public String name; public int age; public User(String name,int age){ this.name=name; this.age=age; } protected String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "name="+name+"\nage="+age; } }public class Main {public User user1,user2;public static void main(String[] args) {new Main().init();}public void init(){User user1 = null; User message=Objects.requireNonNull(user1, new Supplier<String>() {@Overridepublic String get() {return "user1这个对象为null";}});}}
输出:
Exception in thread "main" java.lang.NullPointerException: user1这个对象为null
at java.util.Objects.requireNonNull(Objects.java:290)
at code2.Main.init(Main.java:50)
at code2.Main.main(Main.java:45)
很明显以上程序抛出NullPointerException异常,并输出Supplier接口实现的get方法。
转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/43940885 情绪控_
- java学习笔记21
- Java学习笔记21
- Effective Java 学习笔记(21)
- (21) java IO 学习笔记
- Java学习笔记--CSS笔记
- 21天学通JAVA——学习笔记
- 21天学通Java学习笔记-Day01
- 21天学通Java学习笔记-Day02
- 21天学通Java学习笔记-Day03
- 21天学通Java学习笔记-Day04
- 21天学通Java学习笔记-Day05
- 21天学通Java学习笔记-Day06
- 21天学通Java学习笔记-Day08(数据结构)
- 2014-9-21 java 学习笔记1
- Java学习笔记 —— 21
- 2014-11-21 java web 学习笔记
- JavaSE学习笔记21:Java正则表达式
- Java学习笔记(21) sets and maps
- 第三章
- TCP基础--协议包基本分析
- Linux编程-----实用技巧
- hdu 4908 BestCoder Sequence && BestCoder Round #3 1002
- 通过鼠标控制精灵
- Java学习笔记21
- CentOS5.5 LVS+keepalived 负载均衡冗余技术
- tomcat配置jndi的三种方式
- 7个你不知道的Linux的事实
- Linux CentOS PhpMyAdmin安装
- html+css实现图片展示桌面
- linux编程-----shell脚本
- 用户不在sudoers文件中的解决方法
- 如何确定Linux内核源代码目录即,$KBUILD的路径