Kotlin(kotlin 协程)

电脑问答 2025.03.19 1

目录:

kotlin继承

1、类和接口的继承通过 : 来实现 kotlin 的接口可以包含抽象方法,以及方法的实现,接口可以有属性但必须是抽象的,或者提供访问器的实现,当然java 8 中的接口也支持这些特性了。

2、与Java一样,abstract 关键字用于在Kotlin中声明抽象类。无法实例化抽象类(不能创建抽象类的对象)。但是,您可以从它们中继承子类。除非您明确使用 abstract 关键字将其抽象,否则抽象类的成员(属性和方法)是非抽象的。

3、Kotlin是JetBrains开发的基于JVM的语言;而Java是一种可以编写跨平台应用软件、完全面向对象的程序设计语言。

4、java中的构造函数是与类名相同即可,kotlin里面的构造函数是用constructor关键字表示。kotlin里面的构造函数分为主构造函数和次构造函数。

5、MapK, V 不是 Collection 接口的继承者;但是它也是 Kotlin 的一种集合类型。 Map 存储 键-值 对(或 条目);键是唯一的,但是不同的键可以与相同的值配对。

kotlin使用时遇到的问题(一)

原因还是 Java 转 Kotlin 的类型转化导致的,由于Kotlin 版本兼容问题,平台类型转为可空类型时出错。去掉 可空类型符号 ? 就好了。同理,遇到类似问题,可以去掉或者添加 可空类型符号 ? ,看问题能否解决。

导致 activity 空白的问题。这个方法和调用 onCreate 一个参数的方法一样的,只是被那些已经创建过并且将 persistableMode 设置为persistAcrossReboots的activtiy调用。

去掉注释后var a是个局部变量了。不是闭包。

目前存在哪些问题?生活中没有什么是完美的,包括 Kotlin。以下是我尝试这门语言时遇到的一些问题。最大的问题是不够成熟,因为 Kotlin 目前还处于 Beta 阶段,这意味着:每更新一个版本,语法、ABI 以及标准库就变一次。

看起来,你没有绑定事件到button上面啊,要么你setOnClickListener要么你在xml里面定义onClick属性就可以了。

Kotlin的延迟初始化

1、Kotlin中延迟初始化的方法: lateinit , by lazy lateinit用在var变量,作用:编译器检查时不因为变量未初始化而报错。

2、laterinit 与by lazy 是Kotlin中两种不同延迟初始化的实现。

3、非基本类型的不可空类型(val)的属性可延迟初始化赋值,使用 lateinit 实现该功能。只要保证在使用此属性时已赋值即可,若仍未赋值则会抛出属性尚未初始化异常。若想避免上述异常可以在使用属性前使用isInitialized方法判断。

4、内联类的属性不能拥有 backing fields , 内联类只能拥有简单的计算属性 (不能拥有延迟初始化属性或委托属性)。在生成的代码中,Kotlin 编译器为每个内联类保留一个 包装器。

5、lateinit var age: Int //会报错1 lateinit可以在任何位置初始化并且可以初始化多次。

kotlin属性代理

1、kotlin的代理模式需要实现一个接口,而属性代理只需要实现getValue和setValue方法即可。语法形式: val/var property name: Type by expression 其中 expression 代理了 property name 的getValue和setValue方法。

2、只是发表一下个人经验,不喜勿喷。 nullnull安全,提前声明变量是否为空,与其说是一个语法糖,而不是提前空异常处理安全概念,是为了避免很多不必要的空检查,同时迫使你做必要的null,以避免空异常。

3、我们知道在Kotlin中,声明类的同时可以方便的直接声明构造方法等参数,鉴于data class只是存放数据,那么只一个构造方法足矣,所以连类的body也就不需要了。

4、kotlin能够用更短的代码实现更多的功能,这是java无法比拟的。kotlin特有的扩展属性,不再需要java工具类,对开发更加友好。java中的bean类总是需要使用插件生成settergetter方法。

5、关键字interface用于在Kotlin中定义接口。例如,这里,这是类或对象如何实现接口的方法:在这里,InterfaceImp 类实现了 MyInterface 接口。该类重写接口的抽象成员(test属性 和 foo()方法)。

本文转载自互联网,如有侵权,联系删除

相关推荐