接口是 Java 8 中实用程序类的有效替代品吗?
在过去的十年左右的时间里,我一直在我的Java实用程序类中使用下面的模式。该类仅包含静态方法和字段,声明为无法扩展,并具有构造函数,因此无法实例化。final
private
public final class SomeUtilityClass {
public static final String SOME_CONSTANT = "Some constant";
private SomeUtilityClass() {}
public static Object someUtilityMethod(Object someParameter) {
/* ... */
return null;
}
}
现在,随着Java 8中接口中静态方法的引入,我最近发现自己使用了一种实用程序接口模式:
public interface SomeUtilityInterface {
String SOME_CONSTANT = "Some constant";
static Object someUtilityMethod(Object someParameter) {
/* ... */
return null;
}
}
这使我摆脱了构造函数,以及接口中隐含的许多关键字(,,)。public
static
final
这种方法有什么缺点吗?在实用程序接口上使用实用程序类有什么好处吗?