在Kotlin中的代码的等价物是什么,我尝试的似乎没有什么工作:
public interface AnInterface { void doSmth(MyClass inst, int num); }
字符串初始化:
AnInterface impl = (inst, num) -> { //... }
型
u4vypkhs1#
如果AnInterface是Java,它可以与SAM conversion一起工作:
AnInterface
val impl = AnInterface { inst, num -> //... }
字符串否则,如果接口是Kotlin:
fun interface AnInterface { fun doSmth(inst: MyClass, num: Int) } val impl = AnInterface { inst, num -> ... }
interface AnInterface { fun doSmth(inst: MyClass, num: Int) }
型你可以使用object语法来匿名实现它:
object
val impl = object : AnInterface { override fun doSmth(inst:, num: Int) { //... } }
e4eetjau2#
如果你要将接口及其实现重写为Kotlin,那么你应该删除接口并使用函数类型:
val impl: (MyClass, Int) -> Unit = { inst, num -> ... }
字符串
abithluo3#
您可以使用object expression所以它看起来像这样:
val impl = object : AnInterface { override fun(doSmth: Any, num: Int) { TODO() } }
cidc1ykv4#
对于任何在2022年阅读这篇文章的人来说,Kotlin现在有了函数式(SAM)接口。请参阅https://kotlinlang.org/docs/fun-interfaces.html也许它会保存别人一些时间取决于您的用例。
svujldwt5#
你也可以这样做,使用@lambda标签
@lambda
interface AnInterface { fun doSmth(inst: MyClass, num: Int) } val impl = AnInterface lambda@{inst, num -> //.. }
5条答案
按热度按时间u4vypkhs1#
如果
AnInterface
是Java,它可以与SAM conversion一起工作:字符串
否则,如果接口是Kotlin:
型
型
你可以使用
object
语法来匿名实现它:型
e4eetjau2#
如果你要将接口及其实现重写为Kotlin,那么你应该删除接口并使用函数类型:
字符串
abithluo3#
您可以使用object expression
所以它看起来像这样:
字符串
cidc1ykv4#
对于任何在2022年阅读这篇文章的人来说,Kotlin现在有了函数式(SAM)接口。请参阅https://kotlinlang.org/docs/fun-interfaces.html
也许它会保存别人一些时间取决于您的用例。
svujldwt5#
你也可以这样做,使用
@lambda
标签字符串