Kotlin & 'onConfigurationChanged' overrides nothing
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin & 'onConfigurationChanged' overrides nothing相关的知识,希望对你有一定的参考价值。
参考技术A编译项目报错:
但是这个方法是根据 androidStudio 自动补全功能,直接自动补全的
原因还是 Java 转 Kotlin 的类型转化导致的,由于Kotlin 版本兼容问题,平台类型转为可空类型时出错。
去掉 可空类型符号 ? 就好了。
同理,遇到类似问题,可以去掉或者添加 可空类型符号 ? ,看问题能否解决。
Kevin Learn Kotlin:Java & Kotlin
虽然 Kotlin 的开发很方便,但当你与他人协作时,总会碰到 Java 与 Kotlin 代码共存的代码项目。
本章就教你如何优雅的实现 Kotlin 与 Java 混合编程。
直接转换
将 Java 转换为 Kotlin
如果你之前使用 Java 语言而没有 Kotlin 开发经验,不用担心,Android Studio 会帮你一键转换,将 Java 代码转换成 Kotlin 代码(但是反过来就不行了)。快捷键:Ctrl + Alt + Shift + K
在 Kotlin 中调用 Java 代码
1. 返回 void 的方法
如果一个 Java 方法返回 void,对应的在 Kotlin 代码中它将返回 Unit。
现在你只需要知道在 Java 中返回为 void 的函数,在 Kotlin 中可以省略这个返回类型。
2. 与 Kotlin 关键字冲突的处理
Java 有 static 关键字,在 Kotlin 中没有这个关键字,你需要使用 @JvmStatic 替代这个关键字。
同样,在 Kotlin 中也有很多的关键字是 Java 中是没有的。例如 in,is,data等。如果 Java 中使用了这些关键字,需要加上反引号(`)转义来避免冲突。例如:
// Java 代码中有个方法叫 data()
public void data()
//...
// 转换为 Kotlin 代码需要加反引号转义
fun `data`()
//...
在 Java 中调用 Kotlin 代码
1. static 方法
在 Kotlin 中没有 static 关键字,那么如果在 Java 代码中想要通过类名调用一个 Kotlin 类的方法,你需要给这个方法加入@JvmStatic注解(这个注解只在 jvm 平台有用)。否则你必须通过对象调用这个方法。
/**
* Created on 2022/2/17 9:35
*
* @author Kevin
*/
object StringUtils
@JvmStatic fun isEmpty(str: String): Boolean
return "" == str
fun isEmpty2(str: String): Boolean
return "" == str
Java 调用 Kotlin 代码
/**
* Created on 2022/2/17 9:36
*
* @author Kevin
*/
public class Test
public static void main(String[] args)
StringUtils.isEmpty("Kevin");
StringUtils.INSTANCE.isEmpty2("Kevin");
2. 包级别函数
与 Java 不同,Kotlin 允许函数独立存在,而不必依赖于某个类,这类函数我们称之为包级别函数(Package-Level Functions)。
为了兼容 Java,Kotlin 默认会将所有的包级别函数放在一个自动生成的叫 ExampleKt 的类中, 在 Java 中想要调用包级别函数时,需要通过这个类来调用。
当然,也是可以自定义的,你只需要通过注解 @file:JvmName(“Example”) 即可将当前文件中的所有包级别函数放到一个自动生成的名为 Example 的类中。
3. 空安全性
在 Java 中,如果你调用的 Kotlin 方法参数声明了非空类型,如果你在 Java 代码中传入一个空值,将在运行时抛出 NullPointerException。其内部原因在于 Kotlin 为每个非空类型加了断言,如果传入空值则会立刻抛出异常。
同样,如果你使用 null 对象去调用一个 kotlin 方法,将会立刻抛出 NullPointerException(就算是调用普通 java 方法也是一样会抛出 NullPointerException )
以上是关于Kotlin & 'onConfigurationChanged' overrides nothing的主要内容,如果未能解决你的问题,请参考以下文章
使用从 Kotlin 数据类生成的代码时出现“不兼容的类型”错误
Kevin Learn Kotlin:Java & Kotlin