免费建站网站排名,错题网站开发,平面设计软件photoshop,乌海市网站建设函数式接口 接口只有一个抽象方法的接口#xff0c;称为 函数式接口 functional interface#xff0c;也叫做 Single Abstract Method(SAM) interface。 注#xff1a;函数式接口#xff0c;只有一个抽象方法#xff0c;但可以有多个非抽象方法。
一、Kotlin
Kotlin支持…函数式接口 接口只有一个抽象方法的接口称为 函数式接口 functional interface也叫做 Single Abstract Method(SAM) interface。 注函数式接口只有一个抽象方法但可以有多个非抽象方法。
一、Kotlin
Kotlin支持 lambda 表达式对应的接口声明 fun interface
fun interface IPredicate {fun accept(i: Int): Boolean
}函数式接口可以 lambda 方式创建
val p IPredicate {}非 函数式接口则只能 普通 对象创建方式
val object : IPredicate {}二、Kotlin对 Java SAM 转换支持
Kotlin 对于Java的支持意味着 只有一个非默认方法(non-default method) 的 Java 接口只要 方法参数 和 Kotlin函数参数匹配都可以在 Kotlin 中使用。 比如 Runnable 的使用
val r Runnable {}补充说明 Java 8 引入了 默认方法default method接口方法 支持 default 默认实现。相对 默认方法没有默认实现就是 非默认方法non-default method。 三、Java的函数式接口
Java通过 FunctionalInterface 注解声明 函数式接口。
FunctionalInterface
public interface Runnable {public abstract void run();
}注Kotlin 支持 Java SAM 转换是根据 方法参数匹配而非 Java的注解支持。
文档
Functional (SAM) interfaces函数式SAM接口 kotlincnSAM conversions