在Java 8,如果一个接口只声明了一个抽象方法,那么这个接口称为函数接口。
public interface Runnable { void run(); }
public interface Callable<V> { V call() throws Exception; }
对于接收函数接口为参数的方法,可以使用lambda表达式表示接口。其中lambda表达式需要和接口唯一函数的签名一致,即参数列表,返回值要一直。
@FunctionalInterface
interface Print<T> {
public void print(T x);
}
public class Lambda {
public static void PrintString(String s, Print<String> print) {
print.print(s);
}
public static void main(String[] args) {
PrintString("test", (x) -> System.out.println(x));
}
}
此例中,(x) -> System.out.prinln(x)表示接口Print<String>。