例如我有这个界面:
package tester;
public interface Calculator{
public int calculate(int a,int b);
}
或
package tester;
@FunctionalInterface
public interface Calculator{
public int calculate(int a,int b);
}
我也可以将第一个视为功能界面。例如:
package tester;
public class A {
int a;
int b;
int sum;
A(Calculator c,int e, int d){
a=e;
b=d;
sum =c.calculate(a, b);
}
int get(){
return sum;
}
}
班长
package tester;
public class runner {
public static void main(String a[]){
System.out.println(new A((x,b)-> (x+b),1,2).get());
}
}
代码可以使用或不使用注释,那么为什么注释呢? 为什么不能说任何具有单一方法的接口都可以作为功能接口?
答案 0 :(得分:7)
FuntionalInterface注释只是编译器的提示,是的,任何具有一个抽象方法的接口都可以是一个功能接口。注释可能有助于检测功能界面中的错误。例如:
@FunctionalInterface
public interface ExampleInterface {
}
会导致编译错误。
答案 1 :(得分:4)
是的,任何一个要实现的抽象方法的接口都可以是一个功能接口,注释FunctionalInterface
不是必需的,它只是一个信息性注释,如javadoc中所述。
信息性注释类型,用于指示接口 类型声明旨在成为定义的功能接口 通过Java语言规范。
...
但是,编译器会处理符合定义的任何接口 功能接口作为功能接口,无论如何 是否存在
FunctionalInterface
注释 界面声明。