optional相关知识
-
Java8新特性之:Optional一. 用Optional取代null 1. Optional类 java.util.Optional<T>是一个封装Optional值的类。 变量存在时,Optional类只是对类进行简单的封装。变量不存在时,缺失的值会被建模成一个“空”的Optional对象,由方法Optional.empty()返回。 Optional.empty()方法是一个静态工厂方法,它返回Optional类的特定单一实例。 使用Optional而不是null的一个非常重要而又实际的语义区别: 声明变量时使用
-
Optional让代码更简单Optional是java8引入的新api。他有效的处理了if对空指针等情况的判断。让代码更简洁。 我们下面主要针对下个这个类进行操作 class Book { public String name; public String getName() { return name; } } Optional的创建 Optional的创建有3中。这里只说两种。因为另外一种实在没有找到合适的场景 Optional.ofNullable(); Optional.empty() 第一个是接收一个可以为空的值。 第二个是创建一个空的Optional。 针对空指针取默认值 写程序往往是如果对象是null,可能赋值给
-
【Java8】Java8实战之OptionalJava8实战之Optional前言在前面的几个小节中,我们已经学习了Lambda表达式、Stream以及默认方法,在体会到Java8所带来的极大的便利之后,这小节我们来学习Java8中一个新的功能--Optional。OptionalOptional的出现是为了解决null的问题,在Java中,如果一个对象指针没有被初始化,默认就指向null,而这种情况是比较危险的,在使用的时候,如果忘记对变量进行非空检测,当变量为null的时候,一调用就会出现NullPointerException,这是比较令人头疼的问题,在Java8中,引入了Optional<T>来替代null,Optional<T>的原理其实也比较简单,通过将一个对象包装起来,然后对外提供相应的操作方法,并且在方法内实现了相应地检测操作,这样子就能够避免操作者不小心操作到null而触发空指针异常了由于Optional使用起来比较简单,加上其代码也比较好理解,这里我们直接分析其源码,增长下见识public fina
-
Maven optional关键字透彻图解写在前面 本来想写一篇「如何自定义Spring Boot Starter」,但是为了更好理解 Starter 的一些设计理念和其中的关键点,所以提前将一些细节内容单独提取出来讲解说明 在 Maven pom.xml 中,你经常会看到依赖项中有类似下面的代码: <dependency> <groupId>sample.ProjectA</groupId> <artifactId>Project-A</artifactId> <version>1.0</version> <scope>compile</scope> <optional>true</optional> </dependency> 这里的 <optional>true</optional> 是什么意思呢? optional
optional相关课程
-
JAVA 函数式编程 本课程以 Java 11 为编译环境,讲解了 Java 对函数式编程支持,以及用实战小例子演示如何使用函数式简洁优雅的直击问题核心逻辑。另,老师新作 《Spring Security+OAuth2 精讲 多场景打造企业级认证与授权》https://coding.imooc.com/class/455.html 也上线啦,课程中将结合前后端分离的权限管理应用,基于从单体到微服务的演进,精讲主流安全框架 Spring Security5.x 的核心技术,一站式覆盖目前企业主流认证授权的方方面面,感兴趣的同学,可以关注一下,欢迎撒花拍砖~~
讲师:接灰的电子产品 初级 10811人正在学习
optional相关教程
- Optional 类 上一小节,我们接触到了Optional类,但没有详细展开介绍,Optional类也是 Java 8 新加入的类。本小节我们就来学习一下这个类,你将了解到Optional类的解决了什么问题,如何创建Optioanl类的对象,它又有哪些常用方法,如何在实际开发中应用Optional类等内容。
- 2. 创建 Optional 对象 查看 java.util.Optional类源码,可以发现其构造方法是私有的,因此不能通过new关键字来实例化:我们可以通过如下几种方法,来创建Optional 对象:Optional.of(T t):创建一个 Optional 对象,参数 t 必须非空;Optional.empty():创建一个空的Optional实例;Optional.ofNullable(T t):创建一个Optional对象,参数t 可以为 null。实例如下:1251运行结果:Optional[我是一个字符串]Optional.emptyOptional.empty
- 1. Optional 类概述 空指针异常(NullPointerExceptions)是 Java 最常见的异常之一,一直以来都困扰着 Java 程序员。一方面,程序员不得不在代码中写很多null的检查逻辑,让代码看起来非常臃肿;另一方面,由于其属于运行时异常,是非常难以预判的。为了预防空指针异常,Google的Guava项目率先引入了Optional类,通过使用检查空值的方式来防止代码污染,受到Guava项目的启发,随后在Java 8中也引入了Optional类。Optional 类位于java.util包下,是一个可以为 null 的容器对象,如果值存在则isPresent()方法会返回 true ,调用 get() 方法会返回该对象,可以有效避免空指针异常。下面我们来学习如何实例化这个类,以及这个类下提供了哪些常用方法。
- 6.1 匹配与查找 关于匹配与查找的终止操作,有下面几个常用方法:allMatch(Predicate p):检查是否匹配所有元素;anyMatch(Predicate p):检查是否至少匹配一个元素;noneMatch(Predicate p):检查是否没有匹配所有元素;findFirst():返回第一个元素;findAny():返回当前流中的任意元素;count():返回流中元素总数;max(Comparator c):返回流中最大值;min(Comparator c):返回流中最小值;forEach(Consumer c):内部迭代(使用 Collection 接口需要用户去做迭代,称为外部迭代;相反 Stream API使用内部迭代)。如下实例,演示了几个匹配元素相关方法的使用:1260运行结果:[10, 12, 9, 8, 20, 1]列表中所有的元素都大于0[10, 12, 9, 8, 20, 1]列表中至少存在一个的元素都大于等于20[10, 12, 9, 8, 20, 1]列表中不存在大于100的元素查找元素的相关方法使用实例如下:1261运行结果:[10, 12, 9, 8, 20, 1]列表中第一个元素为:Optional[10]列表中任意元素:Optional[10][10, 12, 9, 8, 20, 1]列表中元素总数为6[10, 12, 9, 8, 20, 1]列表中最大值为Optional[20][10, 12, 9, 8, 20, 1]列表中最小值为Optional[1]实例中,我们观察到findFirst()、findAny()、max()等方法的返回值类型为Optional类型,关于这个Optional类,我们将在下一小节具体介绍。
- 5. 小结 通过本小节的学习,我们知道了 Optional 类主要用于应对 Java 中的空指针异常,它是一个可以为 null 的容器对象,我们可以通过Optional类下的几个静态方法来创建对象。另外,我们也结合实例介绍了如何使用Optional类来规避空指针异常,实例中还有很多其他没用到的 API,希望大家可以自己研习。
- 3. 常用方法 Optional<T>类提供了如下常用方法:booean isPresent():判断是否包换对象;void ifPresent(Consumer<? super T> consumer):如果有值,就执行 Consumer 接口的实现代码,并且该值会作为参数传递给它;T get():如果调用对象包含值,返回该值,否则抛出异常;T orElse(T other):如果有值则将其返回,否则返回指定的other 对象;T orElseGet(Supplier<? extends T other>):如果有值则将其返回,否则返回由Supplier接口实现提供的对象;T orElseThrow(Supplier<? extends X> exceptionSupplier):如果有值则将其返回,否则抛出由Supplier接口实现提供的异常。知道了如何创建Optional对象和常用方法,我们下面结合具体实例来看一下,Optional类是如何避免空指针异常的。请查看如下实例,其在运行时会发生空指针异常:1252运行结果:Exception in thread "main" java.lang.NullPointerException at OptionalDemo2.getGoodsCategoryName(OptionalDemo2.java:73) at OptionalDemo2.main(OptionalDemo2.java:80)实例中,由于在实例化Goods类时,我们没有给其下面的Category类型的属性category赋值,它就为 null,在运行时, null.getName()就会抛出空指针异常。同理,如果goods实例为null,那么null.getCategory()也会抛出空指针异常。在没有使用Optional类的情况下,想要优化代码,就不得不改写getGoodsCategoryName()方法:static String getGoodsCategoryName(Goods goods) { if (goods != null) { Category category = goods.getCategory(); if (category != null) { return category.getName(); } } return "该商品无分类";}这也就是我们上面说的null检查逻辑代码,此处有两层if嵌套,如果有更深层次的级联属性,就要嵌套更多的层级。下面我们将Optional类引入实例代码:1253运行结果:默认分类实例中,我们使用Optional类的 ofNullable(T t)方法分别包装了goods对象及其级联属性category对象,允许对象为空,然后又调用了其ofElse(T t)方法保证了对象一定非空。这样,空指针异常就被我们优雅地规避掉了。
optional相关搜索
-
oauth
object
object c
objective
objective c
objective c基础教程
objective c教程
objectivec
office visio 2003
offsetof
offsetparent
offset函数
okhttp
on on
on time
onbeforeunload
onblur
onclick
oncontextmenu
online