Java的函数式接口
前面介绍了Lambda表达式,它所用的场所是创建只有一个抽象方法的接口的实例。这里**只有一个抽象方法的接口就是函数式接口。**
如果一个接口包括两个及以上抽象方法,那么不能使用Lambda表达式,必须采用匿名内部类来创建这个接口的实例。
因此只有函数式接口才可以写成Lambda表达式的形式:
(1)将Lambda表达式赋值给函数式接口,如下所示:
interface Convert{
Integer convert(String str);
}
public class test{
public static void main(String[] args) {
//直接将Lambda表达式赋值给Convert接口变量
Convert cov=str->Integer.valueOf(str);
Integer i=cov.convert("99");
System.out.println(i);
}
}
程序执行过程如下图:
(2)将Lambda表达式作为函数式接口类型的参数传给某个方法
interface InterfaceA{
void taste();
}
class LamdabTest{
//普通方法1,其方法参数是接口1的一个对象
public void eat(InterfaceA ia) {
ia.taste();
}
public class test{
public static void main(String[] args) {
LamdabTest lt=new LamdabTest();
lt.eat(()->System.out.println("苹果的味道很好"));
}
}
(3)使用函数式接口对Lambda表达式进行强制类型转换
Object obj=(Runnable)()->{
for(int i=0;i<100;i++){
System.out.println(i);
}
}