JDK1.8 Optional关键字

JDK 1.8安装及特性详解 JDK 1.8,也称为Java 8,是Oracle公司在2014年推出的Java平台标准版的重大更新。它引入了多项现代编程语言的趋势和功能,极大地提升了Java语言表达的丰富性,提高了开发效率,特别是在函数式编程和日期时间API的处理上。Lambda表达式提供了一种简洁的表示匿名函数的方法,无需定义完整的类。Lambda表达式的基本结构如下:参数 -> 表达式主体在表达式主体中,如果只有一行代码,可以省略花括号和return关键字,因为它们会自动返回该表达式的结果。 阅读详情

在工作中,经常会处理各种变量,但往往会在使用变量的时候,要进行非空判断,
否则就会出现java.lang.NullPointerException。

在Java 8中提供一个更加优雅处理Null指针错误方式

//如果查询的用户为空,则直接报对应未找到用户错误
UserEntity user = userMapper.findByUsername(username)
                .orElseThrow(() -> new
                        UsernameNotFoundException("未找到用户信息 : "
                        + username));
                        
 //jdk1.7写法
 if(user==null){
   	 throw  UsernameNotFoundException("未找到用户信息 : "
    }

或者下面使用方法


  public Date localDateConvert(LocalDate localDate) {
		//如果当前参数未传递值,则使用默认值 jdk1.8写法
        LocalDate currentDate = Optional.ofNullable(localDate).orElse(LocalDate.now());

        //jdk1.7写法
        LocalDate currentDate = LocalDate.now()
        if (localDate == null) {
            currentDate = localDate
        }

        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdf = currentDate.atStartOfDay(zoneId);

        return Date.from(zdf.toInstant());
    }

注意
Optional 只能处理为null.如果是字符串这种""是不支持的

关于具体用法可以采用我的开源项目easy-boot

项目源码

后端代码前端代码
githubhttps://github.com/zengfen0708/easy-boothttps://github.com/zengfen0708/easy-boot-web
码云https://gitee.com/zf0708/easyboothttps://gitee.com/zf0708/easy-boot-web
Java 1.8 (JDK 1.8) 新特性实战指南与安装 Lambda表达式是Java 8中的一个核心特性,它提供了一种简洁的方式来表示匿名内部类。Lambda表达式允许我们将函数作为参数传递给方法,或者将代码作为数据进行处理。Lambda表达式的基本格式如下:Lambda表达式的出现,为Java带来了函数式编程的元素,使得代码更加简洁且易于阅读。Lambda表达式的特性主要包括以下几点:简洁性:Lambda表达式提供了更简短的语法来代替匿名类。类型推断:编译器可以根据上下文推断出Lambda表达式的参数类型和返回类型。无变量捕获。 阅读详情

相关推荐

从零开始学嵌入式之STM32——1.什么是STM32

它是ST公司推出的一系列单片机的统称。ST----指的是ST公司----意法半导体。意法半导体,成立于1987年,是由意大利的SGS微电子公司和法国的Thomson半导体公司合并而成。ARM目前主要是ARM架构处理器及外围组件的电路设计方案,知识产权授权的形式收取费用,其他公司根据ARM的方案设计出CPU产品。,它以应用为核心,软硬件可裁剪,旨在实现对设备的控制、监测或辅助功能,区别于通用计算机(如 PC、服务器)的 “一机多用” 属性。在嵌入式领域,目前主流的是cortex-M3内核推出的芯片。

qshdyy的博客 1857

开发中遇到的坑——用Arrays.asList将数组转成list,调用用add()方法报错Exception in thread “main“ java.lang.UnsupportedOperati

最近项目中遇到了一个坑,项目启动没问题,一直正常运行,有一次报了莫名其妙的错误: Exception in thread “main” java.lang.UnsupportedOperationException at java.base/java.util.AbstractList.add(AbstractList.java:153) at java.base/java.util.AbstractList.add(AbstractList.java:111) at arraylist.Test.main

samur2的博客 445

用ADS复现一篇MTT顶刊的GAN功率放大器:从理论推导到版图仿真的完整避坑指南

本文详细解析了如何利用ADS软件复现MTT顶刊中的E/F3类GaN功率放大器设计,从理论推导到版图仿真的全流程。通过核心设计理念解析、ADS环境配置、输出匹配网络优化等关键步骤,提供了一套完整的工程实践指南,帮助工程师跨越学术理论与实际应用的鸿沟,实现高效率射频功率放大器的设计。

weixin_30654583的博客 315

巧妙利用JDK1.8新特性解决多if判断及其性能测试

先说说场景,最近接第三方的足球走地数据,需要将这些数据入库,设计到一个足球的eventType的整理,我们自己的库中有一套我们自己的eventType,这些eventType包括进球,红黄牌等事件。第三方数据可能将两个队的进球事件分开成HomeGoal和AwayGoal事件,而在我们的库中将这两个事件合并成一个事件Goal。       将第三方的事件对应到我们自己库中的事件,在解决方式上你可能想到的第一个方法是使用if或者switch case,或者某种设计模式。我想说这些方式都不可取,先说if和swit

生命不止 学无止境 1万+

gps matlab 书,《GPS基本原理及其Matlab仿真》杨俊.pdf

本书讲述了全球定位系统(GPS)的基本原理和概念,具体包括:GPS测量原理、GPS的结构和发展历史;GPS伪距定位和载波相位定位的原理;GPS中使用的坐标系和时间系统;C/A码的实现原理及载波调制过程;GPS信号捕获和跟踪原理及实现;便携式GPS系统的设计与实现及常用芯片资料等。此外,本书还讲了利用Matlab仿真GPS中涉及到的各种算法和原理,并且给出了所有仿真源程序和仿真框图。利用Matlab...

weixin_33603105的博客 1176

利用Android系统漏洞实现后台弹窗(外弹)

关键:从 Android 8.0(API 26)开始,禁止使用 context.sendBroadcast() 发送隐式广播(即没有指定 setPackage() 或明确组件的广播)。demo核心代码展示利用Android显示系统和广播系统的漏洞实现在后台弹窗的功能,支持最新Android15,16版本。核心功能都是在so层去做,大量使用了jni反调, 如果要上架到应用市场,需要对代码做进一步混淆,加固以应对市场安全扫描。3,开启虚拟显示窗口,这是个透明像素窗口。5,可开启一个线程,调用这个外弹窗口。

2018,再出发~ 1316

JDK1.8新特性之Optional容器类

实例1:在项目中生成证书时,存在三级证书,三级证书需要二级证书生成的结果而生成,二级证书需要一级证书的结果进行生成,所以在返回一级二级证书时使用Optional容器来进行返回,再对返回的对象进行校验可以优雅的避免以为一级证书返回值为空的空指针问题。get():获取Optional对象的内容,如果为空则抛出NoSuchElementException异常。Optional类是Java提供的一个可以为null的容器对象,提供的方法可以有效避免空指针问题。empty():提供一个内容为空的Optional对象。

故园风雨前的博客 502

安全监控:人员行为分析_(2).人员行为分析基础理论

人员行为分析是指利用计算机视觉技术对视频中的人类行为进行实时或离线检测、识别和理解的过程。视频采集:通过摄像头等设备获取视频数据。视频预处理:对视频数据进行噪声过滤、图像增强等处理,以便后续分析。特征提取:从视频中提取出与人员行为相关的特征,如人体姿势、动作轨迹等。行为识别:利用机器学习或深度学习模型对提取的特征进行分类,识别出具体的人员行为。行为理解:对识别出的行为进行进一步分析,理解其背后的意图或状态。在人员行为分析中,常用的公开数据集包括UCF101、HMDB51、ActivityNet等。

zhubeibei168的博客 1346

jdk1.8关键字defalut

1、添加工程的头文件目录:工程—属性—配置属性—c/c++—常规—附加包含目录:加上头文件存放目录。 2、添加文件引用的lib静态库路径:工程—属性—配置属性—链接器—常规—附加库目录:加上lib文件存放目录。 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。 3、添加工程引用的dll动态库:把引用的dll放到...

geekCode 746

《基于FPGA的数字信号处理》专栏的导航与说明

《基于FPGA的数字信号处理》专栏的导航与说明

孤独的单刀 4163

十八万字《python从零到精通教程》第二版,贴心保姆教你从零变大神,学不会找我

文章目录一.pycharm下载安装二.python下载安装三.pycharm上配置python四.配置镜像源让你下载嗖嗖的快4.1pycharm内部配置4.2手动添加镜像源4.3永久配置镜像源五.插件安装(比如汉化?)5.1自动补码神器第一款5.2 自动补码神器第二款5.2汉化pycharm5.3其它插件六.美女背景七.自定义脚本开头八、这个前言一定要看九、python入门十、python缩进十一、Python注释1.单行注释2.多行注释十二、Python 变量1.变量定义理解2. 变量名命名3. 分配多个

全栈川川 7万+

Python Type Hint中Optional[str]=None和str=None的区别

Python Type Hint中Optional[str]=None和str=None的区别

nick_young_qu的博客 1708

【UG\NX二次开发】使用内部函数展开和折叠工序导航器

NX二次开发-群精选」专栏收录了那些曾散落在聊天对话框里的精彩的知识分享,这都是被遗落的宝贵财富。让我们一起向大佬学习,充满激情地进步,不断超越自己。底部联系方式,欢迎您加入一起交流。​下次一定。

王牌飞行员_里海的博客 821

小滴课堂-学习笔记:(2)Java高级核心玩转JDK8新特性之接口和日期处理

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 Java新特性玩转JDK8之default关键字 第2集 Java新特性玩转JDK8之新增base64加解密API 第3集 Java新特性玩转JDK8之时间日期处理类上集 第4集 Java新特性玩转JDK8之时间日期处理类下集 第5集 Java新特性玩转JDK8之Optional类 干货文档 第1集 Java新特性玩转JDK8之default关键字 简介:讲解jdk8新特性d..

dev666的博客 414

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JDK1.8整理笔记

一、引言 jdk1.8已经出来好久了,目前13也已经出来了,但是很多公司(我们公司也一样)不太愿意升级到高版本的jdk,主要是有老的项目要维护,还有升级的话配套的框架也要升级,要考虑的细节事情太多。 二、JDK1.8新特性 本文主要介绍了JDK1.8版本中的一些新特性,是个人去学习过程中的记录,仅供参考!如有改进的希望各位建议!感谢! 在jdk1.8中对hashMap等map集合的数据结构优化。h...

Joker 373

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java全网最全面试题(1-java基础)

所谓跨平台性,是指 Java 语言编写的程序,一次编译后,可以在多个系统平台上运行。实现原理:Java 程序是通过 Java 虚拟机在系统平台上运行的,只要该系统可以安装相应的 Java 虚拟机,该系统就可以运行 java 程序。所谓的字节码,就是 Java 程序经过编译之后产生的.class文件,字节码能够被虚拟机识别,从而实现 Java 程序的跨平台性。Java 程序从源代码到运行主要有三步:编译:将我们的代码(.java)编译成虚拟机可以识别理解的字节码(.class。

2402_84344851的博客 245

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java最新面试题(全网最全、最细、附答案)

本文总结了Java编程中的核心概念和面试常见问题。主要内容包括:1. 重载与重写的区别:重载发生在一个类中,参数列表不同;重写发生在子类中,方法签名相同但实现不同。2. 访问修饰符的权限范围:public>protected>default>private。3. ==与equals的区别:==比较值或地址,equals比较对象内容。4. String、StringBuffer和StringBuilder的对比:String不可变,后两者可变且StringBuilder非线程安全。5. 集合

2401_89221445的博客 55

Jdk8新特性一:jdk8新特性之default关键字、日期类、Base64类、Optional

Jdk8新特性一:jdk8新特性之default关键字、日期类、Base64类、Optional 文章目录Jdk8新特性一:jdk8新特性之default关键字、日期类、Base64类、Optionaljdk8新特性重点内容jdk8新特性之default关键字Jdk8新特性之新增Base64 APIJDK8新特性之日期处理类jdk8新特性之日期格式化和计算时间差Jdk8新特性,判断是否为空对象Op...

公子&小白的博客 1142

JDK8新特性-Optional类

JDK8新特性-Optional类

Yyyy的博客 1738

JDK8新特性Optional 类

Optional不是对null关键字的一种替代,而是对于null判定提供了一种更加优雅的实现。NullPointException可以说是所有java程序员都遇到过的一个异常,虽然java从设计之初就力图让程序员脱离指针的苦海,但是指针确实是实际存在的,而java设计者也只能是让指针在java语言中变得更加简单、易用,而不能完全的将其剔除,所以才有了我们日常所见到的关键字null。

不能说的秘密的博客 1万+

JDK1.8的新特性

Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:代码如下: Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用。代码如下: 文中的formula被实现为一个匿名类的实例,该代码非常容易理解,6行代码实现了计算 sqrt(a * 100)。在下一节中,我们将会看到实现单方法接口的更简单的做法。译者

qq_67485050的博客 136

JDK1.8有哪些新特性?JDK1.8详细介绍—叩丁狼

  JDK1.8有哪些新特性?JDK1.8详细介绍   JDK1.8目前在企业中已经广泛被应用,今天我们将学习以下方面的新特性:   Lambda表达式   函数式接口   方法引用   接口的默认方法和静态方法   Optional   Streams   并行数组   Lambda表达式   Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。可以使代码变的更加简洁紧凑。 .

weixin_44782140的博客 2112

JDK8新特性之Optional类

Optional 是 JDK8 新增加的一个工具类,位于 java.util 包下。 Optional 类的引入很好的解决空指针异常(微笑)。

千里之行,始于足下 763

JDK1.8新特性:JDK1.8究竟有那些新特性呢

JDK1.8新特性:JDK1.8究竟有那些新特性呢 JDK1.8概述 JDK1.8,又称之为Java 8(我习惯叫它为JDK1.8,后续统一叫做JDK1.8),是Java语言开发的一个主要版本。Oracle公司于2014年3月18日发布,它支持函数式编程,新的JavaScript引擎,新的日期API,新的Stream API等。 JDK1.8相比1.7之前版本,有以下几方面的优化: 速度更快; 代码更少(Lambda表达式); 强大Stream API; 便于并行; 最大化减少空指针异常(OPtional类

Cola_F的博客 2576

JDK8特性:Optional类的用法

JDK8中新增的Optional工具类使用说明

Newbie的专栏 637

【Java 问题】基础—— jdk1.8 新特性

当我们定义了 一个方法,这个方法返回的对象可能是空,也有可能非空的时候,我们就可以考虑用 Optional 来包装它,这也是在 Java 8 被推荐使用的做法。Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。Stream 流,简单来说,使用 java.util.Stream 对一个包含一个或多个元素的集合做各种操作。count 是一个终端操作,它能够统计 stream 流中的元素总数,返回值是 long 类型。

zxj20041003的博客 1085
上一篇: easy-boot-web前端服务初始化
下一篇: easyboot-code-generate 自动生成代码
疯信子To
博客等级 码龄14年 12粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值