函数式接口
Java8中引入了函数式接口的概念,它需要和Lambda表达式配合使用。函数式接口可以看作是用于声明Lambda表达式的“类型”,Lambda表达式可以创建函数式接口的对象。
函数式接口语法
只包含一个抽象方法的接口(Interface),这种接口就会被编译器视为函数式接口。和函数式接口方法声明的参数类型和返回值类型完全相同的Lambda表达式可以创建函数式接口的对象,如果Lambda表达式抛出受检查异常,那么这个异常也需要在函数式接口上进行声明。此外,我们应该在函数式接口上标注@FunctionalInterface注解(尽管从编译器角度这不是必须的),这样编译器可以帮我们检查它是否是一个函数式接口,如果其中编写了多个方法就不会通过编译,同时也提高了代码的可读性。
下面是使用函数式接口的例子。
package com.gacfox.demo;
@FunctionalInterface
public interface MyFunc {
int func(int x, int y);
}
package com.gacfox.demo;
public class Main {
public static void main(String[] args) {
MyFunc func = (x, y) -> x * y;
int result = func.func(2, 3);
System.out.println(result);
}
}
MyFunc.java代码中,我们声明了一个名为MyFunc的函数式接口,其中包含了一个func()方法。Main.java中,我们使用Lambda表达式创建了MyFunc的实例对象func,此时我们就可以调用func.func()方法了。我们可以注意到,函数式接口方法的参数和返回值是和Lambda表达式完全对应的。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。