1、函数式接口
1.接口中只允许存在一个抽象方法,用@FunctionInterface
2.接口中允许存在静态的实例方法
3.接口中允许重写java.lang.Object的public方法
4.一个接口继承函数式接口,本省也可能是函数式接口,只要满足1,2,3的先天条件即可
2、lambda
1.实例化函数式接口,增强程序的可读性 (接口中抽象方法的参数列表)-> {method body}
2.简化我们的匿名内部类,看下下面的demo
a.new Tread( () –> {}); 直接产生一个线程 Runnable接口的run抽象方法
b.List的排序简化 list.sort((o1 , o2) –> o1.compareTo(o2)); Comparator接口的compare抽象方法
3.简化method body
a.当我们的method仅仅是一个表达式的时候,可以直接省略掉{},写return后面的表达式就行
b.使用 :: 来简化表达式。demo
引用静态方法 (“hello”)-> System.out::println;
引用对象的实例方法 x::toString
引用某个类型的实例方法 String::toString
引用构造方法 String::new
3、接口增强
1.可以允许static方法存在
2.允许默认方法的存在 default void doSomething(){return “OK”;}