我需要以下我的Kotlin代码的帮助(另存为Fun.kt)

import javax.swing.*
import java.awt.*
import java.awt.event.*

class Amir
{
    fun addActionListener(m:ActionListener)
    {
    }
}

fun main()
{

    //SUCCESS
    val btnLambda=JButton("LAMBDA")
    btnLambda.addActionListener(){}


    //FAILED
    val mahmud=Amir()
    mahmud.addActionListener(){}

}

我的疑问是,为什么在编译时此行成功:
btnLambda.addActionListener(){}

但此行失败:
mahmud.addActionListener(){}

提前致谢

最佳答案

有两种方法可以解决此问题。

您应该以另一种方式调用addActionListener,因为它需要一个ActionListener对象,而不是lambda:

    mahmud.addActionListener(ActionListener {})

或者,您应该更改Amir#addActionListener函数的签名以使addActionListener() {}语法有效:

import java.awt.event.ActionEvent
import java.awt.event.ActionListener

class Amir {
    fun addActionListener(action: (e: ActionEvent) -> Unit) {
        val m = ActionListener(action)
    }
}

fun main() {
    val mahmud = Amir()
    mahmud.addActionListener {}
}

10-06 13:51