所有好的答案都在这里。我想在界面中添加静态函数的另一种实际用法。提示来自Joshua Bloch在《第二章:创建和销毁对象》中所著的有效Java,第三版。
Static functions can be used for static factory methods.
静态工厂方法是返回对象的方法。他们像构造函数一样工作。在特定情况下,静态工厂方法比使用构造函数提供的可读性更高。
书中引述-有效的Java,第3版,约书亚·布洛赫(Joshua Bloch)
在Java 8之前,接口不能具有静态方法。按照约定,将名为Type的接口的静态工厂方法放在名为Types的不可实例的伴随类(项目4)中。
作者提供了一个Collections的示例,其中实现了这种静态工厂方法。检查代码,Josh Bloch可以被视为Collections类的第一作者。尽管Collections是类而不是接口。但是这个概念仍然适用。
例如,Java Collections Framework具有其接口的四十五个实用程序实现,提供了不可修改的集合,同步的集合等。几乎所有这些实现都是通过静态工厂方法在一个不可实例化的类(java.util.Collections)中导出的。返回对象的类都是非公共的。
他进一步解释说,API不仅更小,而且还有助于代码可读性和API易用性。
不仅减少了API的体积,而且减少了概念的权重:程序员使用该API必须掌握的概念的数量和难度。程序员知道返回的对象恰好具有其接口指定的API,因此无需阅读实现类的其他类文档。
这是java.util.Collections类的静态方法之一:
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
return new UnmodifiableCollection<>(c);
}