直接上实战
//以前写法
public String getCity(User user) throws Exception{if(user!=null){if(user.getAddress()!=null){Address address = user.getAddress();if(address.getCity()!=null){return address.getCity();}}}throw new Excpetion("取值错误"); }//java8写法 public String getCity(User user) throws Exception{return Optional.ofNullable(user).map(u-> u.getAddress()).map(a->a.getCity()).orElseThrow(()->n...
Optional类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。Optional对象构建&值获取方法实例代码如下Optional<String> optional = Optional.of("java8");// NullPointerException空指针异常 值不能为空
optional = Optional.of(null);
optional = Optional.ofNullable("java8");
System.out.println(optional.get());
Sy...
大量判空的代码实际中,对象不判空会导致空指针异常。为了规避为指针,不得不写出这种非常冗长又丑陋的空指针判断。public void tooMuchNull(Worker worker) {if (worker != null) {Address address=worker.getAddress();if (address != null) {String city=address.getCity();}}
}Optional<T>Optional<T>包含的对象value可能非null,也可能为null。常建的构建Optional<T>对象的方法,有ofNullable(T value)、of(T value)。构建时,...
java8 Optional优雅非空判断import java.util.ArrayList;import java.util.List;import java.util.Optional;public class OptionalTest { public static void main(String[] args) { String str = null; Optional<String> opt = Optional.ofNullable(str); opt.ifPresent(n -> { System.out.println(n); }); List<String> strs = new ArrayList<String>(); strs.add("1")...
代码示例
import java.util.Optional;public class test02 {public static void main(String[] args) {System.out.println("方法1输出的结果是:" + getName());System.out.println("方法2输出的结果是:" + getUser());}public static String getName() {User user = new User("hua wei",22);if (user != null) {String name = user.getName();if (name != null) {return name.toUpperCase();} else {return null;}} else {return...
目录Optional一、Optional类是什么?二、Optional类常用的方法1. 创建Optional实例1.1 Optional.of(T)1.2 Optional.empty()1.3. Optional.ofNullable(T t)1.4. 小结2.访问Optional对象的值2.1 get()获取值2.2 isPresent()验证是否有值2.3 ifPresent()3. 返回默认值3.1 orElse(T t)3.2 orElseGet(Supplier s)3.3 orElse(T t)和orElseGet(Supplier s)的不同4. 转换值4.1 map(Function f)4.2 flatMap(Function mapper)5. 过滤值5.1 fi...
文章目录
简介Optional源码分析和使用场景属性和构造常用方法get()方法isPresent()方法ifPresent(Consumer<? super T> consumer)方法filter()方法map()方法flatMap()方法orElse()方法orElseGet()方法orElseThrow()方法Optional实战空判断断言
使用误区总结在学习Optional之前我们先来看下面的例子。在我们开发过程中,碰到的异常中NullPointerException必然是排行第一的。所以在平时编码中,我们会经常的判断null。
public void sa...
1、Optional类是什么?Optional<T>类(java.util.Optional)是一个容器类,代表一个值存在或者不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。2、常用方法①、Optional.of(T t) : 创建一个Optional实例②、Optional.empty() : 创建一个空的Optional实例③、Optional.ofNullable(T t) : 若t不为null,创建Optional实例,否则创建空实例④、isPresent() : 判断是否包含值⑤、orE...
Java8引入Optional库来解决NullPointerException ,从而避免源码被各种null检查污染,以便开发者写出更加整洁的代码。
引用
import java.util.Optional;使用1
Optional<String> test = Optional.ofNullable(null);
System.out.println(test.isPresent());
System.out.println(test.orElseGet(()->"[none]"));
System.out.println(test.map(t->"Hello, "+s).orElse("You"));输出:
flase
[none]
You使用2
Optional<String> test = O...
做项目时,经常会遇到判断null的问题,在之前有Objects.requireNonNull()来解决,java8提供了Optional来解决这个问题,在网上看到一篇讲解Option的博客,阅读后拿来加强自己的记忆。 原博客https://blog.csdn.net/zjhred/article/details/84976734?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCo...
本章小宋带大家了解一下Java8的Optional类目录
OptionalOptional类Optional类的方法Optional使用实例Optional
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
Optional 类的引入很好的解决空指针异常。
Optional类Optional类的方法public...
1、概述Java8的版本,新增了Optional和[Lambda]表达式,Optional主要用于作为返回类型(主要解决的问题是臭名昭著的空指针异常(NullPointerException)),并将其与流(或返回可选的方法)相结合以构建连贯API。
但是,有些情况可以被认为是陷阱,因为它们会降低代码的质量,甚至导致意想不到的错误。总结以下26个例子,以避免这些陷阱。2、 目 录
[第1项:决不将Null分配给可选变量]
[第2项:调用Optional.get()之前,确保Option...
我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注。期待您能关注我,我将把java 9 写成一系列的文章,大概十篇左右,本文是第7篇。java9系列文章访问地址java.util.Optional是在Java 8版本中新增的类,一定程度上可以改善编程过程中的NullPointException的问题。在Java 9中对这个类新增了一些方法进行增强,下面我们一起来看一下,顺便也回...
Java8 Optional一句话介绍Optional类:使用JDK8的Optional类防止NullPointerException(空指针异常)问题一、前言在我们开发的过程中,碰到的异常中NullPointerException必然是排行第一的,所以在平时编码中,我们会时时的判断nullpublic void saveCity(City city) {if (city != null) {String cityName = city.getCityName();if (cityName != null) {String code = cityDao.findCodeByName(cityName);city.setCode(code);cityDao....
Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)。
本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。
例如:
String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();在 Java 8 之前,任何访问对象方法或属性的调用都可能导致 NullPointerException
在这个小示例中,如果我们需要确保不触发异常,就得在访问每一个值之前对其进行明确地检查...