Java8中Optional类型和Kotlin中可空类型的使用对比
发布时间 - 2026-01-11 03:17:48 点击率:次本文主要给大家介绍了关于Java8中Optional类型和Kotlin中可空类型使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

在 Java 8中,我们可以使用 Optional 类型来表达可空的类型。
package com.easy.kotlin;
import java.util.Optional;
import static java.lang.System.out;
/**
* Optional.ofNullable - 允许传递为 null 参数
* Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
* Optional<String> b = Optional.of(s);
*/
public class Java8OptionalDemo {
public static void main(String[] args) {
out.println(strLength(Optional.of("abc")));
out.println(strLength(Optional.ofNullable(null)));
}
static Integer strLength(Optional<String> s) {
return s.orElse("").length();
}
}
运行输出:
3 0
但是,这样的代码,依然不是那么地优雅。
针对这方面 Groovy 提供了一种安全的属性/方法访问操作符 ?.
user?.getUsername()?.toUpperCase();
Swift 也有类似的语法, 只作用在 Optional 的类型上。
Kotlin 中的可空类型
上面 Java 8的例子,用 Kotlin 来写就显得更加简单优雅了:
package com.easy.kotlin
fun main(args: Array<String>) {
println(strLength(null))
println(strLength("abc"))
}
fun strLength(s: String?): Int {
return s?.length ?: 0
}
其中,我们使用 String? 同样表达了 Optional<String>的意思,相比之下,哪个更简单?
一目了然。
还有Java 8 Optional 提供的orElse
s.orElse("").length();
这个东东,在 Kotlin 是最最常见不过的 Elvis 运算符了:
s?.length ?: 0
相比之下,还有什么理由继续用 Java 8 的 Optional 呢?
Kotlin 中的明星符号
?????????????????????????????????????? ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?.
示例源代码工程Github 地址:
https://github.com/EasyKotlin/java_optional_vs_kotlin_nullable_type
本地下载地址:
http://xiazai./201709/yuanma/java_optional_vs_kotlin().rar
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# java8
# optional
# optional使用
# kotlin
# 可空类型
# 利用Java8 Optional类优雅如何地解决空指针问题
# Java8新特性之空指针异常的克星Optional类的实现
# Java8中Optional类的使用说明
# 相比之下
# 也有
# 本地下载
# 相关内容
# 说了
# 不多
# 给大家
# 可以使用
# 这篇文章
# 谢谢大家
# 用在
# 抛出
# 源代码
# 来写
# 只作
# 运算符
# 就显得
# 有疑问
# util
# static
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
如何在阿里云服务器自主搭建网站?
Bootstrap CSS布局之列表
成都网站制作公司哪家好,四川省职工服务网是做什么用?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
Laravel如何使用Gate和Policy进行授权?(权限控制)
使用spring连接及操作mongodb3.0实例
做企业网站制作流程,企业网站制作基本流程有哪些?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Internet Explorer官网直接进入 IE浏览器在线体验版网址
魔方云NAT建站如何实现端口转发?
如何快速搭建自助建站会员专属系统?
node.js报错:Cannot find module 'ejs'的解决办法
如何在阿里云购买域名并搭建网站?
非常酷的网站设计制作软件,酷培ai教育官方网站?
*服务器网站为何频现安全漏洞?
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
如何在建站主机中优化服务器配置?
Laravel如何创建自定义中间件?(Middleware代码示例)
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
JavaScript Ajax实现异步通信
如何实现建站之星域名转发设置?
免费视频制作网站,更新又快又好的免费电影网站?
如何在橙子建站上传落地页?操作指南详解
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
php485函数参数是什么意思_php485各参数详细说明【介绍】
公司网站制作需要多少钱,找人做公司网站需要多少钱?
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
深圳网站制作的公司有哪些,dido官方网站?
javascript基于原型链的继承及call和apply函数用法分析
如何用低价快速搭建高质量网站?
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何在腾讯云服务器上快速搭建个人网站?
米侠浏览器网页背景异常怎么办 米侠显示修复
如何获取上海专业网站定制建站电话?
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何创建自定义Artisan命令?(代码示例)
高性能网站服务器部署指南:稳定运行与安全配置优化方案
简历在线制作网站免费版,如何创建个人简历?
如何用AWS免费套餐快速搭建高效网站?
PythonWeb开发入门教程_Flask快速构建Web应用

