将在 NotFunctional 的定义中可看到@FunctionalInterface 的作用:接口中如果有多个方法则会产生编译期错误。一句中的方法改为抽象方法 (#546)

close #545
This commit is contained in:
jiangqs3
2020-08-16 17:03:52 +08:00
committed by GitHub
parent d2dd76994e
commit acc61a92c8

View File

@@ -630,7 +630,7 @@ public class FunctionalAnnotation {
}
```
`@FunctionalInterface` 注解是可选的; Java 在 `main()` 中把 **Functional****FunctionalNoAnn** 都当作函数式接口。 在 `NotFunctional` 的定义中可看到`@FunctionalInterface` 的作用:接口中如果有多个方法则会产生编译期错误。
`@FunctionalInterface` 注解是可选的; Java 在 `main()` 中把 **Functional****FunctionalNoAnn** 都当作函数式接口。 在 `NotFunctional` 的定义中可看到`@FunctionalInterface` 的作用:接口中如果有多个抽象方法则会产生编译期错误。
仔细观察在定义 `f``fna` 时发生了什么。 `Functional``FunctionalNoAnn` 定义接口,然而被赋值的只是方法 `goodbye()`。首先这只是一个方法而不是类其次它甚至都不是实现了该接口的类中的方法。这是添加到Java 8中的一点小魔法如果将方法引用或 Lambda 表达式赋值给函数式接口类型需要匹配Java 会适配你的赋值到目标接口。 编译器会在后台把方法引用或 Lambda 表达式包装进实现目标接口的类的实例中。