Java 为什么我们需要写;实现InterfaceName“;在实现功能接口时?
为什么我们在实现功能接口时需要编写“implements FI”Java 为什么我们需要写;实现InterfaceName“;在实现功能接口时?,java,lambda,functional-interface,Java,Lambda,Functional Interface,为什么我们在实现功能接口时需要编写“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) ->
@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");
}
}
@functionaltenterface
只是一种强制编译器检查的方法,这样带注释的接口就只有一个抽象的方法了
此外,它还明确指出
但是,无论接口声明中是否存在functional接口
注释,编译器都会将满足函数接口定义的任何接口视为函数接口
所以它甚至不需要显式地注释它
带注释的接口仍然是一个接口,它与Java代码中的所有其他接口一样使用,因此您需要具体指定何时实现它
但作为一个功能接口,您可以定义一个直接覆盖它的lambda:
FI fi = name -> System.out.println(name);
你不知道
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没有用作函数接口,而且@FunctionInterface只会使编译器强制执行单一方法契约。您不需要它()。您的代码甚至无法编译,因为您的类Hello
没有实现FI
的sayHello
方法。投票是不可复制的。您的代码确实无法编译()。