public interface Example<E>
{
E get(int index);
default E get()
{
return get(0);
}
}
这将是界面的初始设计。这样的东西是默认方法的可接受使用(基本上是默认参数),还是应该只在将来用于增加功能?
答案 0 :(得分:2)
这是对Java 8及更新版本中接口的默认方法的有效使用。
以下是文档:https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
答案 1 :(得分:1)
我可以从Oracle找到关于default
接口方法的预期用法的官方来源是(source):
默认方法使您能够向库的接口添加新功能,并确保与为这些接口的旧版本编写的代码具有二进制兼容性。
但是,我将其视为与abstract
类相同,定义必须由子类实现的abstract
方法(在这种情况下,接口方法没有默认值)实现),以及提供可以被子类覆盖的具体方法(默认接口方法)。
答案 2 :(得分:1)
官方声明的目的是为了向后兼容实现旧接口的客户端(否则他们都必须返回并实现这种新方法)。它仅为此目的而添加,而不是Java的特性。但说实话,这并不是什么大不了的事情,而且我认为增加的易用性肯定会让它变得可以接受。