Kotlin 对象表达式/声明学习笔记

对象表达式

对象表达式是指创建一个匿名类的实例,这个类继承自某个或某些类型,并可以重写它们的方法。对象表达式用关键字 object 来声明。

语法格式

kotlinCopy Code
val obj = object : 父类1(), 父类2() { // 继承的父类或接口的实现 override fun 父类1方法() { // 重写父类1方法的实现 } override fun 父类2方法() { // 重写父类2方法的实现 } // 独有的属性和方法 val name = "example" fun example() { println("This is an example") } }

在上面的代码中,object 关键字后面包含了要继承的父类和接口,然后可以重写它们的方法。

使用场景

对象表达式适合于需要创建一个只使用一次的对象,例如单例模式、函数参数、局部变量等。

示例代码

kotlinCopy Code
fun main(args: Array<String>) { val data = listOf(1, 2, 3, 4, 5) val iterator = object : Iterator<Int> { private var index = 0 override fun hasNext() = index < data.size override fun next() = data[index++] } while (iterator.hasNext()) { println(iterator.next()) } }

在上面的代码中,我们使用对象表达式创建了一个 Iterator 实例,并对其进行了重写,然后使用这个 Iterator 遍历了列表中的每一个元素并打印出来。

对象声明

对象声明是指创建一个单例类的实例,并且它是线程安全的,这意味着它可以被多个线程访问而不会出现问题。对象声明用关键字 object 来声明。

语法格式

kotlinCopy Code
object 单例类名 { // 属性和方法 val name = "example" fun example() { println("This is an example") } }

在上面的代码中,我们使用关键字 object 和一个类名来声明一个对象,然后在对象中编写属性和方法。

使用场景

对象声明适合于需要在整个应用程序中只创建一次的实例,例如数据库连接、日志记录工具等。

示例代码

kotlinCopy Code
object Example { fun sayHello() { println("Hello, World!") } }

在上面的代码中,我们使用对象声明创建了一个 Example 的实例,并定义了一个 sayHello 方法,然后可以通过 Example.sayHello() 调用该方法。