空安全:?和!!

空安全

当我们使用Java开发的时候,我们的代码大多是防御性的。如果我们不想遇到NullPointerException,我们就需要在使用它之前不停地去判断它是否为null。Kotlin,如很多现代的语言,是空安全的,因为我们需要通过一个安全调用操作符(写做?)来明确地指定一个对象是否能为空。

我们可以像这样去写:

//这里不能通过编译. Artist 不能是null

varnotNullArtist:Artist=null

//Artist 可以是 nullvarartist:Artist?=null

//无法编译, artist可能是null,我们需要进行处理artist.print()

//只要在artist != null时才会打印artist?.print()//智能转换. 如果我们在之前进行了空检查,则不需要使用安全调用操作符调用

if(artist!=null) {  artist.print()}

//只有在确保artist不是null的情况下才能这么调用,否则它会抛出异常artist!!.print()

//使用Elvis操作符来给定一个在是null的情况下的替代值valname=artist?.name ?:"empty"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 空安全 因为在kotlin中,默认的类中是无法用null进行初始化,所以可能出现NPE的范围大大缩小了。var s...
    Rhett_S阅读 2,934评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,561评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,174评论 19 139
  • 她离我远去,我却束手无策。 爱渐渐离去,我却像傻瓜一样,呆呆站着,只能眼睁睁地看着她离去的背影,直到变成小点消失在...
    初二姑娘阅读 2,958评论 0 1
  • 都说现在年味越来越淡,过不过年都差不多。其实每个人都有这样的感受,因为物质条件好了,因为独生子女政策让家族这个概念...
    雷雨尘阅读 1,837评论 1 2

友情链接更多精彩内容