我需要以下我的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 {}
}