JDK8新特性复习
lambda表达式
概念: 为了简化匿名内部类的代码写法
适用范围: lambda表达式只能简化函数式接口的匿名内部类写法:
a.首先必须是接口
b.其次接口中只能有一个抽象方法
为什么可以用lambda简化: 因为只有一个抽象方法,lambda可以进行上下文推断.
案例: lambda简化Comparator接口匿名内部类
lambda表达式的进一步简化
方法引用
概念: 为了进一步简化lambda表达式 , 丢弃古老的软件思维,可读性会变得对新手友好,Java官方可能真的悟到了某种感觉,创新...
关键语法是: "::"
静态方法引用 -> 被引用的的方法的参数列表和函数式接口中的抽象方法的参数列表完全一致,才可以使用
实例方法引用 ->System.out.print, out是个打印流常量,属于System对象的,条件与上面一致
特定类型的方法引用 -> String就是个特定类型, "如字符串数组按照首字母忽略大小写升序排序"
构造器引用 -> (前后参数一致,又在创建对象,就可以使用了)案例: 把集合打印成特定字符串的数组list.toArray(),需要new一个IntFunction匿名内部类给底层,重写里面的apply方法,方法类型是字符串数组,入参是集合长度(int value),该方法返回一个字符串数组构造器,然后再遍历集合并把它放入定义好了的字符串数组中
接口中新增的三个方法
jdk8之前接口中只能有抽象方法和常量
默认方法(相当于实例方法)
必须用default修饰,默认用public修饰.必须用接口的实现类的对象来调用
静态方法
默认用public修饰,必须得用接口的类名本身来调用(其实也间接说明静态方法不能被子类继承)
私有方法(jdk9之后才有)
只能被本类的其它默认方法或私有方法访问
浙公网安备 33010602011771号