#是什么
Java8中新增了接口的默认方法,简单来说就是让接口可以自己有实现方法,不许要实现类去实现。
#有什么用
想象一种情况,你定义了一个接口A
,假如里面有几个抽象方法。然后什么B,C,D,E…一大堆类去实现了A
接口里面的几个抽象方法。那么现在问题来了,如果要在A
中新加一个抽象方法,那么所有的实现类都要去实现这个抽象方法,不是很麻烦吗?这个时候默认方法就派上用场了,只需要再A
中自己实现这个新添加的方法就好了,所有的实现类也可以用了。最典型的例子,Iterable
接口就增加了这么一个默认方法
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
我们就可以这么使用该默认方法迭代打印集合中的元素
List<Integer> integers = new ArrayList<Integer>();
integers.add(1);
integers.add(2);
integers.add(3);
integers.forEach(System.o