函数式接口: 有且仅有一个抽象方法的接口叫做函数式接口。当然接口中可以包含其它类型的方法(默认,静态,私有)
接口:
package com.company.FunctionInterface;
/*
函数式接口: 有且仅有一个抽象方法的接口叫做函数式接口。当然接口中可以包含其它类型的方法(默认,静态,私有)
@FunctionalInterface注解的作用:
检测接口是否为一个函数式接口
*/
@FunctionalInterface
public interface MyFunctionalInterface {
public abstract void methed1();
}
实现类:
package com.company.FunctionInterface;
public class MyFunctionalInterfaceImpl implements MyFunctionalInterface{
@Override
public void methed1() {
}
}
测试类:
package com.company.FunctionInterface;
import com.sun.org.apache.xerces.internal.dom.PSVIAttrNSImpl;
/*
函数式接口的使用: 一般作为方法的参数和返回值的类型
*/
public class TestDemo {
//定义一个方法,使方法的参数为函数式接口
public static void show(MyFunctionalInterface functionalInterface){
functionalInterface.methed1();
}
public static void main(String[] args) {
//1.方法的参数为接口时,可以传递接口的实现类对象
show(new MyFunctionalInterfaceImpl());
//2.方法的参数为接口时,可以传递接口的匿名内部类
show(new MyFunctionalInterface(){
@Override
public void methed1() {
System.out.println("使用匿名内部类重写接口中的方法");
}
});
//3.方法的参数为一个函数式接口时,可以使用lambda表达式
show(()-> {
System.out.println("使用lambda表达式重写接口中的方法");
});
//4.使用简化的lambda表达式
show(()->System.out.println("使用简化的lambda表达式重写接口中的方法"));
}
}
结果:
使用匿名内部类重写接口中的方法
使用lambda表达式重写接口中的方法
使用简化的lambda表达式重写接口中的方法
网友评论