其中也不算是新特性吧……毕竟现在都Jdk13啦…..
在以前的学习中,总是认为接口,就是定义一种规范,它里面只能定义常量和抽象类,而这些都是public修饰的。但现在Jdk也给了接口新的特性,没用过以为没啥用….
而以前说的这句话就太错了。自己没了解太多,而说不建议用,太错了。
现在让我们好好学习Jdk8给接口的新特性。当然,现在都13了,也肯定有其他的新特性,这个以后再了解吧……(我现在Jdk才11.0.4……)
接口的新特性
1 | public class ExInterfaceTest01 { |
可以看到,现在的接口不止可以定义一个常量和抽象类,也可以在接口实现静态方法和默认方法。
但是要注意,静态方法只能是接口去使用也不能重写。而接口的默认方法可以直接调用,还可以重写。
1 | interface Fater{ |
一般来说,两个接口里面有两个相同的抽象方法,子类继承了它们两个,只需要实现的其中一个就行。而现在两个接口都有两个相同的默认方法,子类继承了它们,这时候我们就要重写这个默认方法。这方法冲突可能就存在接口里吧,毕竟java多继承只有接口。
lambda
我们先简单的使用匿名内部类。
1 | public class Test01 { |
现在把它转换成lambda表达式。
1 | public class Test01 { |
下面是lambda的推导。
1 | public class Test01 { |
这是只要一个参数,没有返回值的情况。并且只有一行代码的情况下。
1 | public class Test01 { |
有多个参数,并且可以直接返回值,并且只有一行代码,那么处理的的情况有点复杂呢?
1 | public class Test01 { |
这是一个简单的排序算法,有多行代码,返回值也是排序后的结果。
我们的关注点就是(a,n)->{};这里多了{};,也多了return。
如果没有参数,不能直接“->“这样写,一定要“()->”才行。