全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java8中Optional类型和Kotlin中可空类型的使用对比

本文主要给大家介绍了关于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 


相关文章: 建站之星如何优化SEO以实现高效排名?  如何在阿里云虚拟主机上快速搭建个人网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  网站制作话术技巧,网站推广做的好怎么话术?  网站制作软件有哪些,制图软件有哪些?  ppt制作免费网站有哪些,ppt模板免费下载网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  b2c电商网站制作流程,b2c水平综合的电商平台?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  贸易公司网站制作流程,出口贸易网站设计怎么做?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何用AWS免费套餐快速搭建高效网站?  小程序网站制作需要准备什么资料,如何制作小程序?  个人摄影网站制作流程,摄影爱好者都去什么网站?  高防服务器如何保障网站安全无虞?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  建站之星代理平台如何选择最佳方案?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何高效配置IIS服务器搭建网站?  如何通过云梦建站系统实现SEO快速优化?  如何选择可靠的免备案建站服务器?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  已有域名如何免费搭建网站?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  建站主机数据库如何配置才能提升网站性能?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  独立制作一个网站多少钱,建立网站需要花多少钱?  ,柠檬视频怎样兑换vip?  IOS倒计时设置UIButton标题title的抖动问题  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  招商网站制作流程,网站招商广告语?  金*站制作公司有哪些,金华教育集团官网?  定制建站策划方案_专业建站与网站建设方案一站式指南  如何用景安虚拟主机手机版绑定域名建站?  如何选择服务器才能高效搭建专属网站?  如何在阿里云购买域名并搭建网站?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何解决VPS建站LNMP环境配置常见问题?  如何批量查询域名的建站时间记录?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  如何在IIS中配置站点IP、端口及主机头?  网站制作企业,网站的banner和导航栏是指什么?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  如何设计高效校园网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。