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

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

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

4

3 回答 3

2

这是在 Java 8 和更新版本的接口上对默认方法的有效使用。

这是文档: https ://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

和教程: http ://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaSE8DefaultMethods/JavaSE8DefaultMethods.html

于 2017-02-15T21:34:45.027 回答
1

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

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

但是,我把它当作一个abstract类,定义必须abstract由子类实现的方法(在这种情况下,是没有默认实现的接口方法),以及提供可能被子类覆盖的具体方法(默认接口方法) .

于 2017-02-15T21:37:56.027 回答
1

官方声明的目的是为了与实现旧接口的客户端向后兼容(否则他们都必须返回并实现这个新方法)。它只是为此目的而添加的,而不是最初的 Java 功能。但老实说,这没什么大不了的,而且增加的易用性在我看来肯定是可以接受的。

于 2017-04-25T06:41:38.763 回答