首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Pie SDK 与 Kotlin 更合拍

在使用 Java 编程语言时,最常见的痛处之一是在存取空引用 (null reference) 成员时,系统会报出 NullPointerException。...Kotlin 代码调用写入 Java 语言中的 API 时,会依靠上述 API 中的可空性注解来决定每个参数的可空性,以及返回值类型。...您的 Kotlin 代码在调用 SDK 中任一已注解的 API 时,可完好保留空值安全保证。...新的 Android SDK 作为 Android 9 连带发布的一部分,包含了一些常用 API 的可空性注解,当 Kotlin 调用了 SDK 中任何带有注解的 API 时,它能预留出空安全性 (null-safety...△ 编程语言为 Java 时,出现违反可空性协议的情况时 Android Studio 显示的警告示例 为保证您已激活该检查功能,您可访问 IDE 的设置页面并搜索 “Constant conditions

1.1K20

在 Android 11 及更高版本系统中处理可空性

这里就不得不提 Kotlin 在可空性方面的优势了。Kotlin 将可空性直接融合到了类型系统中,这意味着开发者在声明一个参数时,需要提前说明该参数能否接纳 null 值。...本文将带您了解 Android 11 SDK 引入了哪些变更,以便在 API 中显示更多的可空性信息。此外,我们还将介绍一些实用方法与技巧,帮助您做好准备,顺利应对 Kotlin 中的可空性问题。...浅谈 Kotlin 中的可空性 使用 Kotlin 编写代码时,您可以使用问号操作符来指明可空性: KOTLIN var x: Int = 1 x = null // compilation error...可空性对 Java 编程语言有什么作用? 如果我使用的 (Android) API 不是用 Kotlin 编写的,该怎么办?...return currentName; } 复制代码 添加 @Nullable 注释后,当您在 Kotlin 文件中使用 getCurrentName 的结果时,您必须先进行 null 值检查,

1.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring认证中国教育管理中心-Spring Data Couchbase教程五

    当方法将返回null但被声明为不可为空(默认情况下,在存储库所在的包上定义注释)时,就会发生这种情况。如果您想再次选择可空结果,请有选择地使用@Nullable单个方法。...EmptyResultDataAccessException当查询不产生结果时抛出一个。IllegalArgumentException当emailAddress交给方法时抛出一个null。...null当查询没有产生结果时返回。也接受null作为 的值emailAddress。 Optional.empty()当查询没有产生结果时返回。...IllegalArgumentException当emailAddress交给方法时抛出一个null。 基于 Kotlin 的存储库中的可空性 Kotlin 将可空性约束的定义融入到语言中。...Kotlin 代码编译为字节码,它不通过方法签名表达可空性约束,而是通过编译的元数据。确保kotlin-reflect在您的项目中包含JAR 以启用对 Kotlin 可空性约束的自省。

    1.1K10

    使用 Spring Data Repositories(中)

    当该方法将返回null但被声明为不可为空时(在存储库所在的包上定义的默认注释),就会发生这种情况。如果您想再次选择可空结果,请有选择地使用@Nullable单个方法。...EmptyResultDataAccessException当查询未产生结果时抛出。IllegalArgumentException当emailAddress传递给方法是时抛出null。...null当查询未产生结果时返回。也接受null作为 的值emailAddress。 Optional.empty()当查询未产生结果时返回。...IllegalArgumentException当emailAddress传递给方法是时抛出null。 基于 Kotlin 的存储库中的可空性 Kotlin在语言中定义了可空性约束。...Kotlin 代码编译为字节码,它不通过方法签名而是通过编译元数据来表达可空性约束。确保kotlin-reflect在您的项目中包含JAR 以启用对 Kotlin 的可空性约束的内省。

    1.1K30

    Kotlin | 6.Kotlin 的类型系统

    本章内容包括: 处理 null 的可空类型和语法 基本数据类型和它们对应的Java类型 Kotlin 的集合,以及它们和Java的关系 6.1 可空性 /**------------...结尾)定义扩展函数时,这意味着你可以对可空的值调用这个函数; // 并且函数体中的this可能为null,所以你必须显示的检查。...Kotlin编译器不知道可空性,需要自己处理它 //代码清单6.16 不使用null检查访问Java类 fun yellAt(person: JavaCode.PersonJava...当函数没什么有意义的结果返回时,他可以用作函数的返回类型 fun f(): Unit {} // 显式的Unit声明被省略了 fun f2() {}...Kotlin 使用标准 Java 集合类,并通过区分只读和可变集合来增强它们。 当你在 Kotlin 中继承 Java 类或者实现 Java 接口时,你需要仔细考虑参数的可空性和可变性。

    2.3K10

    Kotlin与Java互操作

    Java中的任何引用都可能是null,这使得Kotlin对来自Java的对象进行严格的空安全检查是不现实的。Java声明的类型在Kotlin中称为平台类型,并会被特别对待。...,Kotlin不会在编译时报告可空性错误,但是在运行时调用可能会失败,因为空指针异常。...当把一个平台值赋给一个Kotlin变量时,可以依赖类型推断(该变量会具有所推断出的平台类型,如上例中item所具有的类型),或者选择我们所期望的类型(可空的或非空类型均可)。...当类型并未标注可空性注解时使用默认可空性,并且该默认值是由最内层标注有带有与所用类型相匹配的 ElementType 的类型限定符默认注解的元素确定。...型变的泛型 当 Kotlin 的类使用了声明处型变时,可以通过两种方式从Java代码中看到它们的用法。

    3.5K30

    Spring Data JPA 参考文档二

    要为查询方法启用可空性约束的运行时检查,您需要使用 Spring 的@NonNullApiin在包级别激活非可空性package-info.java,如以下示例所示: 示例 20....当该方法将返回null但被声明为不可为空时(在存储库所在的包上定义的默认注释),就会发生这种情况。如果您想再次选择可空结果,请有选择地使用@Nullable单个方法。...null当查询未产生结果时返回。也接受null作为的值emailAddress。 Optional.empty()当查询未产生结果时返回。...IllegalArgumentException当emailAddress传递给方法是时抛出null。 基于 Kotlin 的存储库中的可空性 Kotlin在语言中定义了可空性约束。...Kotlin 代码编译为字节码,它不通过方法签名而是通过编译元数据来表达可空性约束。确保kotlin-reflect在您的项目中包含JAR 以启用对 Kotlin 的可空性约束的内省。

    1.1K30

    Spring认证中国教育管理中心-Spring Data MongoDB教程十五

    如果您通过start.spring.io引导 Kotlin 项目,则默认提供这些。 20.2.零安全 Kotlin 的关键特性之一是空安全,它null在编译时干净地处理值。...这通过可空性声明和“值或无值”语义的表达使应用程序更安全,而无需支付包装器的成本,例如Optional. (Kotlin 允许使用具有可为空值的函数式构造。请参阅Kotlin 空值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 可空性注释的支持为Kotlin 开发人员提供了整个 Spring Data API 的空安全,具有null在编译时处理相关问题的优势。...Kotlin 类型是从 Spring API 推断出来的,但在使用时应该知道 Spring API 可空性声明可以演变,即使在次要版本之间也是如此,并且将来可能会添加更多检查。...尚不支持通用类型参数、可变参数和数组元素可空性,但应在即将发布的版本中提供。 20.3.对象映射 有关Kotlin对象如何具体化的详细信息,请参阅Kotlin 支持。

    2.4K30

    Spring认证中国教育管理中心-Spring Data R2DBC框架教程七

    如果您通过start.spring.io引导 Kotlin 项目,则默认提供这些。 17.2.零安全 Kotlin 的关键特性之一是空安全,它null在编译时干净地处理值。...这通过可空性声明和“值或无值”语义的表达使应用程序更安全,而无需支付包装器的成本,例如Optional. (Kotlin 允许使用具有可为空值的函数式构造。请参阅Kotlin 空值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 可空性注释的支持为Kotlin 开发人员提供了整个 Spring Data API 的空安全,具有null在编译时处理相关问题的优势。...Kotlin 类型是从 Spring API 推断出来的,但在使用时应该知道 Spring API 可空性声明可以演变,即使在次要版本之间也是如此,并且将来可能会添加更多检查。...尚不支持通用类型参数、可变参数和数组元素可空性,但应在即将发布的版本中提供。 17.3.对象映射 有关Kotlin对象如何具体化的详细信息,请参阅Kotlin 支持。

    1.4K40

    微服务架构之Spring Boot(七十)

    50.2无安全性 Kotlin的一个关键特性是零安全性。它在编译时处理 null 值,而不是将问题推迟到运行时并遇到 NullPointerException 。...默认情况下,Kotlin中使用的Java API类型被识别为 放宽空检查的平台类型。...Kotlin对JSR 305注释的支持与可空性注释相结合,为Kotlin 中相关的Spring API提供了空的安全性。...strict 值需要在从Spring API推断的Kotlin类型中考虑空安全性,但应该使用Spring API可空性声明甚至可以在次要版本和更多检查之间 发展的知识可能会在将来添加)。...尚不支持泛型类型参数,varargs和数组元素可空性。有关最新信息,请参见SPR-15942。另请注意,Spring Boot自己的API 尚未 注释。

    89810

    Spring中国教育管理中心-Apache Cassandra 的 Spring 数据教程十四

    如果您通过start.spring.io引导 Kotlin 项目,则默认提供这些。 15.2.零安全 Kotlin 的关键特性之一是空安全,它null在编译时干净地处理值。...这通过可空性声明和“值或无值”语义的表达使应用程序更安全,而无需支付包装器的成本,例如Optional. (Kotlin 允许使用具有可为空值的函数式构造。请参阅Kotlin 空值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 可空性注释的支持为Kotlin 开发人员提供了整个 Spring Data API 的空安全,具有null在编译时处理相关问题的优势。...Kotlin 类型是从 Spring API 推断出来的,但在使用时应该知道 Spring API 可空性声明可以演变,即使在次要版本之间也是如此,并且将来可能会添加更多检查。...尚不支持通用类型参数、可变参数和数组元素可空性,但应在即将发布的版本中提供。 15.3.对象映射 有关Kotlin对象如何具体化的详细信息,请参阅Kotlin 支持。

    1.7K40

    减少崩溃,提升体验 | 使用 Kotlin 打造优质应用

    比如 Kotlin 的空安全性就让点评的 Android 应用团队赞不绝口,而且团队开发者还可以通过在 Java 代码中使用 @Nullable 和 @NonNull 等注解来确保 Kotlin 代码获得正确的可空性推断...由于是否可为 null 被强制执行,您将得到编译时错误,而不仅仅是警告。官方文档 介绍了处理是否可为 null 的方式。 避免常见问题 开发者会无意中引入一些问题,有些问题可能非常微妙且难以察觉。...然而,经常会发生忘记实现其中一个方法或者在类中添加新属性时忘记更新。当处理仅用于保存数据的类时,请使用 Kotlin 数据类。...其次,Kotlin 为结构相等定义了 ==,为引用相等定义了 ===,避免在不该检查引用相等的时候进行检查。...修改枚举来添加新的值时,您必须手动检查使用枚举的每个代码段,并确保处理好新的情况。但这很容易出错。

    1.4K10

    又一巨头放弃 Java ,拥抱 Kotlin !

    除了受欢迎程度外,Meta 还将最新的 Kotlin 版本与 Java 11(可用于 Android 开发的最新版本)进行了比较,并得出了 Kotlin 的一些主要优势:可空性、函数式编程、更短的代码、...Meta 的 Android 代码库总共已包含有超过 1000 万行的 Kotlin 代码。作为此次迁移的一部分,Meta 透露其也正在开源用于操作 Kotlin 代码的各种示例和实用程序。...在一些复杂的情况下,Kotlin 的空检查省略还可能漏掉空值通过,进而引发空指针异常。例如,如果 Kotlin 代码调用由 Java 接口实现的 Kotlin 接口,就会发生这种情况。...其他问题包括 Java 无法将类型参数标记为可空性(直到最近才修复),以及 Kotlin 的重载规则考虑了可空性,而 Java 的重载规则却没有。...而在尝试为现有应用程序引入 Kotlin 时,Meta 也遇到了很多麻烦,例如需要更新 Redex 以支持 Java 不生成的字节码模式。

    72130

    介绍Kotlin第二部分(翻译篇)

    关于Kotlin和lambdas的最好部分是类型推断,当类型不匹配时,它就在你的代码下面出现一条红色的线。通过编译器的这种帮助,您可以将精力放在业务逻辑上,而不是试图找出循环应该遍历多少遍。...有关Kotlin的collection扩展功能的更多信息可以在官方网站API doc中找到 2、Null safety(空安全) 当涉及到可空性,Kotlin编译器会非常严格的剖析您的代码。...= null val notNil: String = "Hi" var nil = null 这三个变量声明有两个可空值,一个不为null。无效性的共同点是问号;可空变量和函数参数用问号定义。...这个问号在Kotlin的null safe起着重要的作用。如果Kotlin编译器在变量声明或函数参数/返回类型中看到这个问号,它将强制您对空检查。...在Kotlin中类型推断是非常好的,编译器在编写代码时给出了很多有用的提示。当您需要检查对象是否是某种类型时,您可以使用is关键字。

    98940

    kotlin基础--null安全、异常、先决条件

    接下来来学习kotlin的null安全、异常、先决条件 一 .null 使用Java时,我们需要大量的判断一个变量是否为null,否则使用是会抛出NullPointer异常。...而kotlin使用null给一个变量赋值时,在编译时,就会报错,来防止发生这种异常 1.可空性 kotlin中,除非另有规定,否则变量禁止为null 2.null类型 由1.可空性可知kotlin不允许给非空变量赋值...null,除非我们定义变量时使用关键字"?"...= "null" a = null println(a) } 3.null安全 对于一个可空变量,调用它的函数,编译时会报错,除非你主动接受安全管理 报错: 使用非空断言操作符接收安全管理...") 抛出异常: throw MyException() 三.先决条件函数 为了便利,kotlin提供了一些先决条件函数,当满足条件时,抛出异常:

    53320

    【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )

    文章目录 一、Kotlin 的空安全机制 二、变量可空性 1、默认变量不可赋空值 2、声明可空类型变量 三、手动空安全管理 四、空安全调用操作符 ?...提前排查出可能出现的空指针异常问题 , 并提前进行处理 , 这样极大地提高了 Kotlin 程序的 代码健壮性 ; 二、变量可空性 ---- 1、默认变量不可赋空值 在 Java 中 , 引用类型的变量...---- 在 Kotlin 语言中 , 调用 可空类型变量 的 成员 时 , 可以使用 " 安全调用操作符 " 也就是 ? 进行调用 , 使用格式如下 : 可空类型变量?....---- Kotlin 中的 可空类型 变量 , 在运行时 可以选择 不启用 安全调用 操作 , 在调用 可空类型 变量 成员 与 方法 时 , 使用 非空断言操作符 !!...调用 变量 成员 , 不会进行 空值检查 , 如果变量为空 , 则直接抛出 kotlin.KotlinNullPointerException 异常 ; 使用 try .. catch ..

    1.8K10

    Kotlin 2.0 跟随全新的更快、更灵活的 K2 编译器一起发布

    除了性能和多平台支持之外,切换到新编译器的另一个关键原因是让语言在解释开发人员的代码意图时更加智能。...例如,语句 longList[0] += 1 现在是被允许使用的,并且也可以与可为 null 的值以及可选的取消引用运算符 ? 结合使用。...这就是为什么 JetBrains 专注于扩展语言(语法)的功能来检查数据和描述条件,从而提高可读性和消除嵌套层的原因。此外,他说,智能强制类型转换可以减少认知负荷,因为你不需要学习新的结构。...animal.purr() } } 同样,智能强制类型转换将被传播,以保存有关可空性(nullability)、 is 检查、 as 强制类型转换和契约的状态。...当 Kotlin 2.0 应用新的智能强制类型转换时,另一种情况是将闭包内捕获的变量作为读 / 写。

    24410

    【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )

    文章目录 一、Kotlin 的空安全机制 二、变量可空性 1、默认变量不可赋空值 2、声明可空类型变量 一、Kotlin 的空安全机制 ---- Java 中的空指针问题 : 在 Java 语言...编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 , 该异常是 运行时 才爆出的 , 在 代码编写时 以及 编译期 很难提前排查出来 ; Kotlin 的空安全机制...Kotlin 程序的 代码健壮性 ; 二、变量可空性 ---- 1、默认变量不可赋空值 在 Java 中 , 引用类型的变量 默认为 null 空值 ; 但是在 Kotlin 中 , 变量默认不可为...: Null can not be a value of a non-null type String 这是因为 var name 变量 默认为非空的 , 在 Kotlin 中 不允许将 默认变量...可空类型 , 此时就可以为 该变量 赋值 null 值 ; fun main() { var name: String?

    1.9K20

    kotlin基础--类定义、初始化、继承

    我们操作属性时,实际调用的是get和set方法,因为kotlin变量的不可空性,对于非空变量,我们在赋值时,系统要对赋值的值进行是否为null判断 class Human { var name:...= null val age //年龄为随机数 get() = (1..100).shuffled().first() } 3.防范竞态条件 和可空变量一样,如果属性可空...println(h4.name) println(h4.age) } 结果: 张三 10 5.初始化块 初始化块,相当于默认提供了一个初始化方法,可以设置变量或值,以及执行有效性检查...capitalize() } } 6.初始化顺序 kotlin代码和反编译成Java代码对比: 7.延迟初始化 使用关键字lateinit来表示使用时,才初始化参数,构造时并不会初始化占用内存...中所有类的超类为Any,编译时才会实现它的基本方法,以便根据不同平台实现跨平台

    68010
    领券