Java和Kotlin中的Lambda之间的差异

I am trying to find out what are the differences between Kotlins and Javas lambdas. The website of Kotlin says "Kotlin has proper function types, as opposed to Java's SAM-conversions"

我认为这是最大的区别。因此,您需要Java中的Functional接口。在kotlin中,您具有函数类型。您不需要额外的界面。

您可以在kotlin中调用lambda。因此,如果将Java中的lambda传递给函数,则必须在该函数的主体内部调用Single抽象方法。

int method(IntBinaryOperator op){
    return op.applyAsInt(5, 10);
}

和科特林的方式:

fun method(value: Int, op: (Int) -> Int){
    print(op(value)) // You have no SAM; you can call op.invoke() or op()
}

fun main() {
  method(5) {
      it * it
  }
}

因此,我认为这是kotlin的巨大优势,您可以使用自定义数量的参数等来创建自己的lambda,而无需创建额外的功能接口或currying。

另一个区别和优点是可以与接收方调用lambda。我想每个人都知道这个概念,所以我可以在这里略过。您可以构建DSL,并且具有作用域功能。

嗯,如果它是最后一个参数,则可以在()之外传递lambda。我认为这也是java和lambda之间的重要区别。它更具可读性。

我认为那是区别,还是我错过了一些基本知识?