在过去十年左右的时间里,我一直在为我的 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
这种方法有什么缺点吗?使用实用程序类而不是实用程序接口有什么好处?