接口改善
如今接口里已经彻底能够定义静态方法了. 举一个比较广泛的例子就是在java类库中, 对于一些接口如Foo, 都会有一个有静态方法的工具类Foos 来生成或者配合Foo对象实例来使用. 既然静态方法能够存在于接口当中, 那么大多数状况下 Foos工具类彻底可使用接口中的公共方法来代理 (或者将Foos置成package-private).数据结构
除此以外更重要的就是, Java 8中接口能够定义默认的方法了.举个例子,一个for-each循环的方法就能够加入到java.lang.Iterable中:
1
2
3
4
5
|
public
default
void
forEach(Consumer<?
super
T> action) {
Objects.requireNonNull(action);
for
(T t :
this
) {
action.accept(t);
}
}
|
在过去,java类库的接口中添加方法基本上是不可能的. 在接口中添加方法意味着破坏了实现了这个接口的代码. 可是如今, 只要可以提供一个正确明智的默认的方法的实现, java类库的维护者就能够在接口中添加方法.
Java 8中, 大量的默认方法已经被添加到核心的JDK接口中了. 稍候我会详细介绍它们.