Kotlin 对象表达式/声明学习笔记
对象表达式
对象表达式是指创建一个匿名类的实例,这个类继承自某个或某些类型,并可以重写它们的方法。对象表达式用关键字 object
来声明。
语法格式
kotlinCopy Codeval obj = object : 父类1(), 父类2() {
// 继承的父类或接口的实现
override fun 父类1方法() {
// 重写父类1方法的实现
}
override fun 父类2方法() {
// 重写父类2方法的实现
}
// 独有的属性和方法
val name = "example"
fun example() {
println("This is an example")
}
}
在上面的代码中,object
关键字后面包含了要继承的父类和接口,然后可以重写它们的方法。
使用场景
对象表达式适合于需要创建一个只使用一次的对象,例如单例模式、函数参数、局部变量等。
示例代码
kotlinCopy Codefun 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 Codeobject 单例类名 {
// 属性和方法
val name = "example"
fun example() {
println("This is an example")
}
}
在上面的代码中,我们使用关键字 object
和一个类名来声明一个对象,然后在对象中编写属性和方法。
使用场景
对象声明适合于需要在整个应用程序中只创建一次的实例,例如数据库连接、日志记录工具等。
示例代码
kotlinCopy Codeobject Example {
fun sayHello() {
println("Hello, World!")
}
}
在上面的代码中,我们使用对象声明创建了一个 Example
的实例,并定义了一个 sayHello
方法,然后可以通过 Example.sayHello()
调用该方法。