接口常量的令人困惑的目的
在 Java 中,可以在接口中声明字段,使它们隐式地公开、静态和公开。最终的。这在开发人员中引起了疑问。
常量接口陷阱
与预期相反,在接口内定义常量被视为“常量接口反模式”。正如 Joshua Bloch 在《Effective Java》中所述,这种做法不必要地向用户暴露了实现细节,并阻碍了未来的代码修改。此外,它将子类绑定到常量接口。
平台异常
尽管有此警告,但在 Java 标准库中仍可以找到几个常量接口,例如 java.lang. io.ObjectStream常量。这些奇怪的现象不应作为示例,而应作为要避免的对比。
替代方法
为了防止与常量接口相关的陷阱,请考虑使用专用的实用程序类私有构造函数和静态最终字段。
public final class Constants {
private Constants() {}
public static final double PI = 3.14159;
public static final double PLANCK_CONSTANT = 6.62606896e-34;
}
这种方法使常量保持私有,但可以通过静态导入轻松访问。
import static Constants.PLANCK_CONSTANT;
import static Constants.PI;
public class Calculations {
public double getReducedPlanckConstant() {
return PLANCK_CONSTANT / (2 * PI);
}
}
因此,虽然接口常量可能看起来很有趣,但由于潜在的设计缺陷,应该避免使用它们。使用带有静态final的私有类来维护干净灵活的代码库。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3