如何在Kotlin中从自身内部访问功能?

时间:2019-08-28 12:14:34

标签: kotlin lambda

在Java中,我可以这样写

final Handler handler = new Handler();
handler.post(new Runnable() {
    @Override
    public void run() {
        handler.post(this);
    }
});

当我在Kotlin中编写类似的内容时,出现编译错误。 Lambda表达式内的this不能正常运行。我该怎么办?

val handler = Handler()
handler.post{
    handler.post(this) // this line throws a compilation error
}

1 个答案:

答案 0 :(得分:5)

    @Bean
    public Job downloadFilesAndInsertData(JobListener listener) {
        return jobBuilderFactory.get("downloadFiles")
                .incrementer(new RunIdIncrementer())
                .listener(listener)
                .start(step1())
                .next(step2())
                .build();
    }

尽管从技术上讲,蒂姆的解决方案也行得通,但他应该将其发布为答案,因为这样更容易。如果他愿意,那就接受那个。

val handler = Handler()

fun doAction() {
    handler.post(::doAction) // like `this`
}

handler.post(::doAction)