这是Java默认接口方法的可接受使用吗?

时间:2017-02-15 21:01:20

标签: java interface default-method

public interface Example<E>
{
    E get(int index);

    default E get()
    {
        return get(0);
    }
}

这将是界面的初始设计。这样的东西是默认方法的可接受使用(基本上是默认参数),还是应该只在将来用于增加功能?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我可以从Oracle找到关于default接口方法的预期用法的官方来源是(source):

  

默认方法使您能够向库的接口添加新功能,并确保与为这些接口的旧版本编写的代码具有二进制兼容性。

但是,我将其视为与abstract类相同,定义必须由子类实现的abstract方法(在这种情况下,接口方法没有默认值)实现),以及提供可以被子类覆盖的具体方法(默认接口方法)。

答案 2 :(得分:1)

官方声明的目的是为了向后兼容实现旧接口的客户端(否则他们都必须返回并实现这种新方法)。它仅为此目的而添加,而不是Java的特性。但说实话,这并不是什么大不了的事情,而且我认为增加的易用性肯定会让它变得可以接受。