为什么我们需要在实现FunctionalInterface时编写“implements FI”?
@FunctionalInterface
interface FI
{
void sayHello(String name);
}
public class Hello implements FI
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
FI fi = (name) -> System.out.println("Hello " + name);
fi.sayHello("world");
}
}
答案 0 :(得分:1)
@FunctionalInterface
只是一种强制执行编译器检查的方法,因此带注释的接口只有一个abstract
方法,仅此而已。
此外,它明确指出
但是,无论接口声明中是否存在
FunctionalInterface
注释,编译器都会将符合功能接口定义的任何接口视为功能接口。
所以它甚至不需要明确地注释它。
带注释的接口仍然是一个接口,它被用作Java代码中的所有其他接口,因此您需要具体指定何时实现它。
但作为一个功能界面,您可以定义一个直接覆盖它的lambda:
FI fi = name -> System.out.println(name);
答案 1 :(得分:1)
你不
interface FI {
void sayHello(String name);
}
public class Hello {
public static void main(String[] args) {
FI fi = (name) -> System.out.println("Hello " + name);
fi.sayHello("world");
}
}
Hello并没有用作功能接口,而且@FunctionalInterface只是让编译器强制执行单一方法契约。