Kotlin中的object关键字
·
大约 200 个字
·
预计 1
分钟 读完
参考链接
Kotlin中使用object关键字来代替Java中的匿名内部类实现。
在Java中很多时候我们需要一个一次性对象,可以使用匿名内部类来实现,如下:
1
2
3
4
5
6
7
| Thread thread = new Thread(){
@Override
public void run(){
System.out.println("hello world");
}
}
|
在Kotlin中也支持同样的写法:
1
2
3
4
5
| val thread: Thread = object : Thread(){
override fun run(){
println("hello world")
}
}
|
除此之外,object关键字后面可以跟多个基类。
1
2
3
4
5
6
7
8
9
10
11
| open class A(x: Int){
public open val y: Int = x
}
interface B{
}
val ab: A = object : A(1), B{
override val y = 15
}
|
如果没有特殊的基类,只需要创建一个对象而已,则可以:
1
2
3
4
5
6
| val adb = object : {
var x: Int = 0
var y: Int = 0
}
println(adb.x + adb.y)
|
除此之外,可以使用object关键字来实现一个单例模式。
object关键字类不具有构造方法,而且只有一个实例就是它本身。
1
2
3
4
|
object SingleInstance{
}
|
但是注意,上面是一个对象声明,而不是一个表达式,所以不能在赋值语句右边。
类内部的对象声明可以用 companion 关键字标记:
1
2
3
4
5
| class MyClass{
companion object Factory{
fun create(): MyClass = MyClass()
}
}
|
该伴生对象的成员可通过只使用类名作为限定符来调用:
1
| val instance = MyClass.create()
|