java8 Optional正确使用姿势

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);
    }
}
时间: 2024-10-12 20:07:38

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

二分查值,正确的姿势

04:网线主管 总时间限制:  1000ms 内存限制:  65536kB 描述 仙境的居民们决定举办一场程序设计区域赛.裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛.他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器.为了组织这个完全公正的比赛,裁判委员会主席提出要将所有选手的电脑等距离地围绕在服务器周围放置. 为购买网线,裁判委员会联系了当地的一个网络解决方案提供商,要求能够提供一定数量的等长网线.裁判委员会希望网线越长越好,这样选手们之间的距

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

$("input:radio[name="analyshowtype"]").attr("checked",false); $("input[name=jizai]:eq(0)").attr("checked",'checked'); $("input[@type=radio][name=sex][@value=1]").attr("checked",true); 以

NSnotificationCenter 正确使用姿势, removeObject 探索

最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码的时候才发现和这里没有关系.在我印象中,曾经因为没有移除通知而遇到闪退的问题.所以让我很意外,于是写了个demo研究了下,同时来讲下NSNotificationCenter使用的正确姿势. NSNotificationCenter 对于这个没必要多说,就是一个消息通知机制,类似广播.观察者只需要向消

Gradle的依赖方式——Lombok在Gradle中的正确配置姿势

写过java的都知道,lombok几乎在项目中处于不可或缺的一部分,但是lombok在Gradle的项目中配置并非人人都知道. 很多人在项目依赖中直接这样写 1 compile "org.projectlombok:lombok:1.18.4" 但这样的处理在Gradle 5.0以上被命令禁止了,在4.x的高级版本中编译时也会有对应的告警 12345 The following annotation processors were detected on the compile cla

java代码之美(16) ---Java8 Optional

摘自:https://www.cnblogs.com/qdhxhz/p/12056745.html Java8 Optional 一句话介绍Optional类:使用JDK8的Optional类来防止NullPointerException(空指针异常)问题. 一.前言 在我们开放过程中,碰到的异常中NullPointerException必然是排行第一的.所以在平时编码中,我们会时时的判断null. public void saveCity(City city) { if (city != nu

正确的姿势很重要:该如何执笔

快速入门: 蔡新老师教书法-正确握笔姿势—专辑:<蔡新老师教书法>—在线播放—优酷网,视频高清在线观看 (蔡新老师应该是学的布衣老师的执笔方法:布衣老师的执笔方法_伏羲教育林美娟_新浪博客 ) 理论详解: 布衣的博客(需番羽墙):正确握笔姿势,矫正握姿,写字讨论的部落格 :: 随意窝 Xuite日志 目录如下,包括握笔姿势矫正,写字漂亮技巧等... 出了书<写字基本功>,教学视频,还有其他一些东西,官方网站(需番羽墙): 筆博士實業-最好寫的U-Pen矯姿筆.握筆器:專業正確握筆姿

iOS-----5分钟学会枚举的正确使用姿势-Enumeration宏

前言 Enum,枚举,相信大部分编程语言都有对应的枚举类型,功能可能有多有少,但是枚举最核心的功能是 "规范的定义代码中的状态.状态码.选项". 状态.状态码.选项 什么是状态:同时只能出现一个值(状态码就是他的值),比如这个ScrollView里的枚举: Objective-C 1 2 3 4 5 typedef NS_ENUM(NSInteger, UIScrollViewKeyboardDismissMode) { UIScrollViewKeyboardDismissModeN

.net DataTable 正确排序姿势

关于dataTable中根据列排序正确姿势做个随笔,方便查阅 1 System.Data.DataTable dt = new System.Data.DataTable(); 2 dt.Columns.Add("date", typeof(System.String)); 3 System.Data.DataRow dr = dt.NewRow(); 4 dr["date"] = "2016-09"; 5 System.Data.DataRow

Android线程的正确使用姿势

线程是程序员进阶的一道重要门槛.对于移动开发者来说,"将耗时的任务放到子线程去执行,以保证UI线程的流畅性"是线程编程的第一金科玉律,但这条铁则往往也是UI线程不怎么流畅的主因.我们在督促自己更多的使用线程的同时,还需要时刻提醒自己怎么避免线程失控.除了了解各类开线程的API之外,更需要理解线程本身到底是个什么样的存在,并行是否真的高效?系统是怎么样去调度线程的?开线程的方式那么多,什么样的姿势才正确? 多线程编程之所以复杂原因之一在于其并行的特性,人脑的工作方式更符合单线程串行的特点