1、有且仅有一个抽象方法的接口
2、可以有默认方法、静态方法
FunctionalInterface 注释:
与@Override 注释作用类似,该注释可以用于一个接口的定义
@FunctionalInterface
public interface MyFunctionalInterface{
public abstract void myMethod();//只有一个抽象方法
public static void method1(){
//省略内容
}
public default void method2(){
//省略内容
}
}
常用函数式接口
主要在java.util.function下
1、Supplier接口
Supplier< T >
方法:
T get()获得结果
//使用Lambda表达式
Supplier s2= ()->{return 10;};
2、Consumer接口
Consumer< T>
方法:
void accept(T t) 对获取的数据进行操作
Consumerc=(String s)->{ System.out.println(s);}; c.accept("helloworld") //输出helloworld
3、Function接口
Function< T,R>转换型接口,根据一个类型的数据,得到另一个类型的数据,前者称为前置条件,后者称为后置条件
方法:
R apply(T ,t)根据T类型的数据, 返回R类型的数据
Functionf=(String s)->{ return Integer.parseInt(s);}; Integer num=f.apply("10"); System.out.println(num);
4、Predicate接口
Predicate< T> 对某种数据类型进行判断
方法:
boolean test(T t)
Predicatep=(String s)->{return s.endsWith(".java");}; p.test("aaaa.java");



