Java 8 如何正确使用 Optional

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils; import java.util.Optional; @Data
@EqualsAndHashCode(exclude={"self"})
@ToString(callSuper=true, exclude="self")
public class PersonDto {
private Integer id;
private String name;
private String password; private Double self; public boolean validateName1() {
return StringUtils.equals("hjz", name);
} public static boolean validateName2(String name) {
return StringUtils.equals("hjz", name);
} public static void main(String[] args) {
PersonDto personDto = new PersonDto();
personDto.setName("hjz");
// String name = Optional.ofNullable(personDto)
// .map(obj -> obj.getName())
// .filter(StringUtils::isNotEmpty)
// .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available.")); // String name = Optional.ofNullable(personDto)
// .map(obj -> obj.getName())
// .filter(PersonDto::validateName2)
// .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available.")); String name = Optional.ofNullable(personDto)
.filter(PersonDto::validateName1)
.map(obj -> obj.getName())
.orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available."));
System.out.println(name);
}
}

java8 Optional正确使用姿势的更多相关文章

  1. java8的正确使用姿势

    ackage com.expgiga.Java8; import java.util.ArrayList; import java.util.Arrays; import java.util.List ...

  2. Java8 如何正确使用 Optional

    原文出处:https://blog.kaaass.net/archives/764 Optional是Java8提供的为了解决null安全问题的一个API.善用Optional可以使我们代码中很多繁琐 ...

  3. xpath轴的正确使用姿势

    网上看了许多关于轴的介绍,只介绍了语法,而没有明说具体实际中该怎么使用,百思不得其解. 背景--python中使用xpath:  ----------------------------------- ...

  4. 高版本jquery尤其是1.10.2的版本设置input radio设置值的最正确的姿势。

    $("input:radio[name="analyshowtype"]").attr("checked",false); $(" ...

  5. NSnotificationCenter 正确使用姿势, removeObject 探索

    最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码 ...

  6. 微信H5中静默登录及非静默登录的正确使用姿势

    在微信中打开网页且需要调用微信登录接口时,微信官方给我们提供了两种登录调用方式:静默登录和非静默登录:但是官方文档中却没有说明在何种情况下使用静默登录,何种情况下使用非静默登录,所以在这里,我想将之前 ...

  7. Java日志正确使用姿势

    前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中“尽情”的打印我们需要的信息了.但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发生,作为一名 ...

  8. MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集

    MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在. 使用复 ...

  9. 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

    基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)   前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...

随机推荐

  1. 【centos】 error: command 'gcc' failed with exit status 1

    原文连接http://blog.csdn.net/fenglifeng1987/article/details/38057193 用安装Python模块出现error: command 'gcc' f ...

  2. Java中eclipse与命令行向main函数传递参数

    我们知道main函数是java程序的入口,main函数的参数类型是String[]. 1.Eclipse中向main方法传递参数 例如: public class Mytest { public st ...

  3. SpringBoot集成Spring Security(授权与认证)

    ⒈添加starter依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifact ...

  4. Python 3.x 格式化输出字符串 % & format 笔记

    Python 3.x 格式化输出字符串 % & format 笔记 python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记 %c字 ...

  5. 【Connection Events】【BLE】【原创】

    Connection Events  本人在TI官网的学习笔记,现整理如下   两台BLE设备建立连接后,所有的通信事件都是通过Connection Events中发生的           上图为两 ...

  6. 在Linux,误删磁盘分区怎么恢复呢【转】

    在我们运维工作中,频繁的操作,可能命令写入错误,造成磁盘分区的删除,那么应该怎么办呢?怎么恢复磁盘分区呢? 一不小心删除了磁盘分区.如下图,删除了sda磁盘的第一个分区,为系统boot分区,系统如果重 ...

  7. 一步步实现windows版ijkplayer系列文章之七——终结篇(附源码)

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  8. linux 内核是什么?

    一:linux系统如何构成的?User space:User Applications and GNU C library (glibc)kernel space:System Call interf ...

  9. 面向对象特征:封装、多态 以及 @propetry装饰器

    (继承补充)组合 obj=fun()#对象 obj.attr=foo()#对象的属性等于另一个对象 什么是组合:     A类的对象具备某一个属性,该属性的值是B类的对象   基于这种方式就把A类与B ...

  10. dynamic web module和对应的TOMCAT 版本

    大致因为java的web系统有多种类型,比如静态的和动态的,然后动态的java web project要设置dynamic web module,也就是动态网页模型,他必须要和对应的服务器搭配好了才能 ...