这是对 Java 默认接口方法的可接受使用吗?
Is this an acceptable use of a Java default interface method?
public interface Example<E>
{
E get(int index);
default E get()
{
return get(0);
}
}
这将是界面的初始设计。这样的默认方法(主要是默认参数)的使用是否可以接受,或者它们应该只在将来用于添加功能?
这是在 Java 8 和更新版本中对接口默认方法的有效使用。
这是文档:https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
我可以从 Oracle 找到关于 default
接口方法的预期用途的 官方 来源是 (source):
Default methods enable you to add new functionality to the interfaces of your libraries and ensure binary compatibility with code written for older versions of those interfaces.
但是,我将其视为与 abstract
class 相同,定义 abstract
方法 必须 由 sub 实现classes(在这种情况下,没有默认实现的接口方法),以及提供可以被 subclasses(默认接口方法)覆盖的具体方法。
官方声明的目的是为了向后兼容实现旧接口的客户端(否则它们都必须返回并实现这个新方法)。它只是为此目的添加的,最初并不是 Java 的功能。但老实说,这没什么大不了的,而且增加的易用性在我看来肯定是可以接受的。
public interface Example<E>
{
E get(int index);
default E get()
{
return get(0);
}
}
这将是界面的初始设计。这样的默认方法(主要是默认参数)的使用是否可以接受,或者它们应该只在将来用于添加功能?
这是在 Java 8 和更新版本中对接口默认方法的有效使用。
这是文档:https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
我可以从 Oracle 找到关于 default
接口方法的预期用途的 官方 来源是 (source):
Default methods enable you to add new functionality to the interfaces of your libraries and ensure binary compatibility with code written for older versions of those interfaces.
但是,我将其视为与 abstract
class 相同,定义 abstract
方法 必须 由 sub 实现classes(在这种情况下,没有默认实现的接口方法),以及提供可以被 subclasses(默认接口方法)覆盖的具体方法。
官方声明的目的是为了向后兼容实现旧接口的客户端(否则它们都必须返回并实现这个新方法)。它只是为此目的添加的,最初并不是 Java 的功能。但老实说,这没什么大不了的,而且增加的易用性在我看来肯定是可以接受的。