不要再用 if (obj != null) 判空了!!! | 您所在的位置:网站首页 › nullnull啥意思 › 不要再用 if (obj != null) 判空了!!! |
privateInteger age; publicPerson(String name, Integer age){ this.name = name; this.age = age; } publicPerson{ } publicString getName{ returnname; } publicvoidsetName(String name){ this.name = name; } publicInteger getAge{ returnage; } publicvoidsetAge(Integer age){ this.age = age; } } 下面,我们就高效的学习一下神奇的Optional类! 2.1 Optional对象创建 首先我们先打开Optional的内部,去一探究竟 先把几个创建Optional对象的方法提取出来 publicfinalclassOptional< T> { privatestaticfinalOptional EMPTY = newOptional; privatefinalT value; //我们可以看到两个构造方格都是private 私有的 //说明 我们没办法在外面去new出来Optional对象 privateOptional{ this.value = null; } privateOptional(T value){ this.value = Objects.requireNonNull(value); } //这个静态方法大致 是创建出一个包装值为空的一个对象因为没有任何参数赋值 publicstatic Optional empty{ @SuppressWarnings( "unchecked") Optional t = (Optional) EMPTY; returnt; } //这个静态方法大致 是创建出一个包装值非空的一个对象 因为做了赋值 publicstatic Optional of(T value){ returnnewOptional(value); } //这个静态方法大致是 如果参数value为空,则创建空对象,如果不为空,则创建有参对象 publicstatic Optional ofNullable(T value){ returnvalue == null? empty : of(value); } } 再做一个简单的实例展示 与上面对应 // 1、创建一个包装对象值为空的Optional对象 Optional optEmpty = Optional.empty; // 2、创建包装对象值非空的Optional对象 Optional optOf = Optional.of( "optional"); // 3、创建包装对象值允许为空也可以不为空的Optional对象 Optional optOfNullable1 = Optional.ofNullable( null); Optional optOfNullable2 = Optional.ofNullable( "optional"); 我们关于创建Optional对象的内部方法大致分析完毕 接下来也正式的进入Optional的学习与使用中 2.2 Optional.get方法(返回对象的值) get方法是返回一个option的实例值 源码: publicT get{ if(value == null) { thrownewNoSuchElementException( "No value present"); } returnvalue; } 也就是如果value不为空则做返回,如果为空则抛出异常 "No value present" 简单实例展示 Person person= newPerson; person.setAge( 2); Optional.ofNullable(person).get; 2.3 Optional.isPresent方法(判读是否为空) isPresent方法就是会返回一个boolean类型值,如果对象不为空则为真,如果为空则false 源码: publicbooleanisPresent{ returnvalue != null; } 简单的实例展示: Person person= newPerson; person.setAge( 2); if(Optional.ofNullable(person).isPresent){ //写不为空的逻辑 System.out.println( "不为空"); } else{ //写为空的逻辑 System.out.println( "为空"); } 2.4 Optional.ifPresent方法(判读是否为空并返回函数) 这个意思是如果对象非空,则运行函数体 源码: publicvoidifPresent(Consumer |
CopyRight 2018-2019 实验室设备网 版权所有 |