Kotlin在声明之前使用匿名内部类

时间:2018-03-31 22:47:39

标签: java kotlin

我正在将我的一个Android项目迁移到kotlin,在java中我经常在类的底部声明匿名内部类,例如

@Override
public void onCreate(Bundle ...) {

    ...

    findViewById(R.id.btnDelete).setOnClickListener(mDeleteClickListener);
}


...
...
...


private View.OnClickListener mDeleteClickListener = new View.OnClickListener {

    @Override
    public void onClick(View v) {
        // Process event using class variables
        findViewById(...)
    }
};

然而,考虑kotlin中的这种类似模式:

override fun onCreate(b: Bundle) {

    ...

    findViewById<View>(R.id.btnDelete).setOnClickListener(mDeleteClickListener)
}

...
...
...

private val mDeleteClickListener = object : View.OnClickListener {

    override fun onClick(v: View) {
        // Process event using class variables
        findViewById(...)
    }
}

它不允许我这样做,因为它在内部类之前声明了函数onCreate。我必须将它移到我使用它的函数之上,我不喜欢在类的顶部声明这些内部类。

有没有办法在kotlin中使用这种模式?

0 个答案:

没有答案