Java 8:使用静态方法而非静态util类进行接口

当我需要一堆无状态实用程序方法时,Java 8中的最佳实践是什么。有一个 被任何人(即public interface

Signaturesand)实现的接口是正确的public interface Environments吗?还是采用旧方法-具有public

final class Signaturespublic final class Environments使用私有构造函数|| 更好?枚举?

回答:

接口的主要目的是提供一种类型和对该类型的操作词汇(方法)。它们之所以有用且灵活,是因为它们允许多个实现,并且实际上,它们旨在允许在类层次结构中不相关的实现。

问题问,

具有任何人都不会实现的接口是对的吗?

在我看来,这似乎削减了接口的范围。人们将不得不四处查看API,以确定没有实现该接口的类,并且没有该接口的生产者或消费者。可能有人会感到困惑并尝试创建该接口的实现,但是当然他们不会走得太远。尽管所有静态方法都可能具有“实用程序接口”,但这并不像旧的不可构造的最终类习语那样清晰。后者的优点是该类可以

强制执行 任何实例都不能创建。

如果您查看新的Java 8 API,尽管可以在接口上添加静态方法,但仍会使用最终的类惯用法。

接口上的静态方法已用于诸如工厂方法之类的事情来创建这些接口的实例,或者用于在这些接口的所有实例之间具有普遍适用性的实用程序方法。例如,请参阅中的StreamCollector接口java.util.stream。每个人都有静态工厂:Stream.of()Stream.empty(),和Collector.of()

但也请注意,每个都有配套的实用程序类StreamSupportCollectors。这些是纯实用程序类,仅包含静态方法。可以说它们可以合并到相应的接口中,但这会使接口混乱,并使类中包含的方法的关系模糊。例如,StreamSupport包含一系列相关的静态方法,它们都是Spliterator和之间的所有适配器Stream。将它们合并Stream可能会使事情变得混乱。

以上是 Java 8:使用静态方法而非静态util类进行接口 的全部内容, 来源链接: utcz.com/qa/406066.html

回到顶部