当前位置: 首页 > news >正文

Kotlin中的类

类初始化顺序

constructor 里的参数列表是首先被执行的,紧接着是 init 块和属性初始化器,最后是次构造函数的函数体。

  1. 主构造函数参数列表
  2. firstProperty 初始化
  3. 第一个 init 块
  4. secondProperty 初始化
  5. 第二个 init 块
  6. 次构造函数函数体
class Example constructor(param: String) {val firstProperty = "First property: $param".also(::println)init {println("First initializer block that prints $param")}val secondProperty = "Second property: ${param.length}".also(::println)init {println("Second initializer block that prints ${param.length}")}constructor(param: String, secondParam: Int) : this(param) {println("Secondary constructor")}
}

静态类

2种静态类, 一种伴生类, 一种独立类
通过伴生类实现单例模式, 每个类伴生类只允许一个, 伴生类的名字可有可无

   class UserManager private constructor(var name: String) {init {print("test == $name")}constructor(name: String, age: Int) : this(name) {}constructor(name: String, age: Int, moreInfo: String) : this(name) {}override fun toString(): String {return name}companion object {val instance = UserManager("defaultName");fun getInstance(): UserManager {return instance}}}

通过独立类实现工具类

    object LogUtil {private val TAG = LogUtil.javaClass.simpleName.toString()fun log(ss: String): Unit {Log.e(TAG, ss)}}

数据类

  • data class 必须至少有一个参数。
  • 所有的主构造函数参数需要被标记为 val 或 var。
  • 数据类不能是抽象的、开放的(open)、密封的(sealed) 或者内部的(inner)
    可以使用网站生成数据类

https://transform.tools/json-to-kotlin
以下是两种生成的例子, Kotlin对下划线命名有警告, 所以自己不会生成下划线的名字, 使用注解的时候需要第三方库
implementation ‘com.fasterxml.jackson.core:jackson-annotations:2.11.2’

    data class Root(val userId: Long,val id: Long,val title: String,val completed: Boolean,)data class Root2(@JsonProperty("device_brand")val deviceBrand: String,@JsonProperty("device_id")val deviceId: String,@JsonProperty("device_number")val deviceNumber: String,val googleAdId: String,@JsonProperty("main_package_id")val mainPackageId: Long,val os: String,val page: Long,val query: String,val refresh: Boolean,)

Kotlin中所有类的类型

在 Kotlin 中,有以下几种主要的类类型:

  1. 普通类(Regular Class):这是最常见的类类型。可以用 class 关键字来声明这样的类。这种类可以包含构造函数、属性、方法等。例如:class MyClass(var name: String, val age: Int)
  2. 数据类(Data Class):这类用于存储多种数据类型的数据。它提供了一些内置的方法,如 equals()、hashCode()、toString() 和 copy()。声明一个数据类,需要在前面加上 data 关键字。例如:data class User(val name: String, val age: Int)
  3. 对象类(Object Class):这是 Kotlin 的一个单例类。一个对象类不能在构造函数中提供任何参数。可以通过 object 关键字创建。例如:object SampleObjectClass
  4. 枚举类(Enum Class):这是一种特殊的类,用于定义一组命名的常量值。例如:enum class DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
  5. 密封类(Sealed Class):密封类用于表示受限的类继承结构。一个密封类自身是抽象的,不能直接实例化并且可以有抽象成员。密封类的所有子类必须在该密封类自身定义的文件中声明。例如:sealed class Expr
  6. 内部类(Inner Class):Kotlin 中的内部类是默认不持有外部类引用的。如果需要访问外部类的成员,需要使用 inner 修饰符。例如:class Outer { inner class Inner }
  7. 嵌套类(Nested Class):在 Kotlin 中,一个类可以被嵌套在另一个类中,称为嵌套类。例如:class Outer { class Nested }
  8. 匿名内部类(Anonymous Inner Class):在 Kotlin 中,一般使用对象表达式创建匿名类的对象。例如在监听器的实例化中常用到。

以上就是 Kotlin 中的主要类类型。如果您还有其他关于 Kotlin 或其他 Android 相关的问题,欢迎随时提问。

http://www.lryc.cn/news/389455.html

相关文章:

  • VSCode中常用的快捷键
  • 代码随想录-Day45
  • Rust Eq 和 PartialEq
  • 思考如何学习一门编程语言?
  • 顺序串算法库构建
  • [论文阅读笔记33] Matching Anything by Segmenting Anything (CVPR2024 highlight)
  • 阿里Nacos下载、安装(保姆篇)
  • 四、golang基础之defer
  • 机器人----四元素
  • IBM Spectrum LSF Application Center 提供单一界面来管理应用程序、用户、资源和数据
  • 如何选择品牌推广公司?哪家好?收费标准及评价!
  • JDeveloper 12C 官网下载教程
  • 中英双语介绍美国的州:印第安纳州(Indiana)
  • Flink实现准确和高效流处理的关键问题
  • isidentifier()方法——判断字符串是否为合法的Python标识符或变量名
  • 天猫商品列表数据接口(Tmall.item_search)
  • React+TS前台项目实战(二十一)-- Search业务组件封装实现全局搜索
  • SEO与AI的结合:如何用ChatGPT生成符合搜索引擎优化的内容
  • 【信息系统项目管理师知识点速记】组织通用管理:知识管理
  • CM-UNet: Hybrid CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation
  • DP:子序列问题
  • Spring Data与多数据源配置
  • 【前端vue3】TypeScrip-类型推论和类型别名
  • javaEE——Servlet
  • Kotlin扩展函数(also apply run let)和with函数
  • C语言笔记27 •单链表介绍•
  • C++编程(五)单例模式 友元
  • 012-GeoGebra基础篇-构造圆的切线
  • 数据结构速成--查找
  • SpringMVC的基本使用