在Java中,我可以使用匿名类来实现如下所示的接口:
接口:
interface Human
{
void think();
}
实施:
public class Runner
{
public static void main(String[] args)
{
Human programmer = new Human()
{ public void think()
{
System.out.println("Hello World!");
}
};
programmer.think()
}
}
如果我将其转换为kotlin,则它将变为:
接口:
interface Human
{
fun think()
}
实施:
fun main(args: Array<String>)
{
var programmer : Human = object : Human
{
override fun think()
{
System.out.println("Hello World!")
}
}
programmer.think()
}
但是我可以在kotlin实现中应用SAM(单一抽象方法)转换并转换为lamda吗?
答案 0 :(得分:1)
否,您不能将SAM转换用于Kotlin接口,只能用于Java接口。 official docs on SAM conversions(强调我)明确指出了这一点:
[SAM转换]仅适用于Java互操作;由于Kotlin具有适当的功能类型,因此不需要将功能自动转换为Kotlin接口的实现,因此不受支持。