对象:<ClassName>在Kotlin中代表什么?

时间:2019-06-13 16:46:50

标签: android kotlin

我是Kotlin的新手。我正在尝试将旧的Java代码转换为Kotlin。当我尝试创建一个新的Handler并覆盖handleMessage()方法时,我得到了一个答案:How to use Handler and handleMessage in Kotlin?

priv val mHandler = object:Handler(){

override fun handleMessage(msg: Message?) {
    // Your logic code here.
}

}

我不明白“对象:”代表什么,为什么我们在这里需要它?当我尝试val mHandler = Hander(){}时出现错误,我无法覆盖handleMessage()

1 个答案:

答案 0 :(得分:2)

这只是Kotlin继承/实现匿名类并创建一个新类的方法,而不是就地创建它。

Java:

//Define an interface (or a class):
public interface Runnable {
    void run();
}

//Create an anonymous class and instantiate it:
Runnable runnable = new Runnable() {
    @Override
    void run() {
        //Do something here
    }
}

科特琳:

//Define an interface (or a class):
interface Runnable {
    fun run()
}

//Create an anonymous class and instantiate it:
val runnable = object: Runnable() {
    override fun run() {
        //Do something here
    }
}

如果您没有编写object:部分,则意味着您正在实例化接口/超类本身。接口和抽象类是不可能的。另外,在{}之后加上()而没有object:也是语法错误。