5招鲜-Kotlin这样处理NPE

本文介绍了Kotlin处理空指针异常(NPE)的五种方法,包括安全调用操作符?.、Elvis操作符?:、!!操作符以及安全类型转换。Kotlin通过这些特性在一定程度上缓解了NPE问题,但仍然需要关注Java互操作和类型转换等场景中的潜在风险。
摘要由CSDN通过智能技术生成

在这里插入图片描述

前言

相传NPE值十亿美金。哇~那是好多?

Kotlin为何这么??号称解决了NPE呢?
① NPE从哪里来
② Kotlin从哪几个方面解决了NPE
③ Kotlin到底解决了什么?
④ 在什么时候,Kotlin的NPE解决方案是失灵的?


NPE的来源

有四个来源

  • 显式调用 throw NullPointerException()
  • 使用了 !! 操作符
    • 这是Kotlin提供的用户可强制抛出NPE的操作符
    • 使用了!!只要碰到NPE就会如期抛出
  • 有些数据在初始化时不一致
    • this泄漏
      未初始化的this被传递,并用于其他地方
    • 调用了一个 超类中的open成员,并在 派生类中使用了 该open成员的未初始化 状态
  • Java 互操作
    • 企图访问平台类型的 null 引用的成员
      • 平台类型 即 Java 声明的类型
      • java的引用可能是null
      • 平台类型的范例
      val list = ArrayList<String>() // 非空(构造函数结果)
      list.add("Item")
      val size = list.size // 非空(原生 int)
      val item = list[0] // 推断为平台类型(
Apollo-Kotlin 是一个为 Kotlin 开发者提供的用于与 GraphQL 服务进行交互的库。根据引用,在 ApolloClientConfig.kt 文件中定义了两个 ApolloClient 实例,分别对应两个不同的 GraphQL 服务端点。这些实例可以用于向服务端发送请求和获取响应的数据。 另外,根据引用,在 GraphqlApi.kt 文件中,我们可以看到两个 ApolloClient 实例的注入。这些实例可以在 fetchService1() 和 fetchService2() 方法中使用,用于调用相应的 GraphQL 服务端点。fetchService2() 方法中还包含了异常处理的代码,以便在发生异常时进行处理。 综上所述,Apollo-Kotlin 是一个用于与 GraphQL 服务进行交互的库,它提供了方便的 API 用于发送请求和获取响应的数据。通过定义 ApolloClient 实例,并将其注入到相关的类中,我们可以轻松地使用 Apollo-Kotlin 进行 GraphQL 开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Spring boot中apollo-kotlin基本使用(一个客户端使用多个graphql端点)](https://blog.csdn.net/fggdgh/article/details/128089362)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Kotlin进阶指南 - Parcelable序列化](https://blog.csdn.net/qq_20451879/article/details/126250953)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值