why i can't use lambda for interface at kotlin?

Viewed 875

see, I have a Java class:

public final class JavaReceiveSingle {
    public static void useSingle(Single single) {
        single.doSth();
    }
    public static void useSingle2(SingleInterface singleInterface) {
        singleInterface.doSth();
    }
}

a Java interface:

public interface SingleInterface {
    void doSth();
}

a kotlin interface:

interface Single {
    fun doSth()
}

Now I can use lambda in a kotlin class like:

JavaReceiveSingle.useSingle2({})

But if I want to do the same thing to kotlin interface:

JavaReceiveSingle.useSingle({})

IDE will show error :Required: Single! Found: ()->Unit

And If I specify Single like:

JavaReceiveSingle.useSingle(Single{})

Still error:Interface Single does not have constructs!

Though the following code works:

JavaReceiveSingle.useSingle(object :Single{
    override fun aa() {}
})

But why I can't use lambda for a kotlin interface?

1 Answers
Related