接口常量的令人困惑的目的
在 Java 中,可以在接口中声明字段,使它们隐式公开、静态和可变。最终的。这引起了开发人员的疑问。
常量接口陷阱
与预期相反,在接口中定义常量被视为“常量接口反模式”。正如 Joshua Bloch 在《Effective Java》中所述,这种做法不必要地向用户暴露了实现细节,并阻碍了未来的代码修改。此外,它将子类绑定到常量接口。
平台异常
尽管有此警告,但在 Java 标准库中仍然可以找到几个常量接口,例如 java.lang. io.ObjectStream常量。这些奇怪的现象不应作为示例,而应作为要避免的对比。
替代方法
为了防止与常量接口相关的陷阱,请考虑使用专用的实用程序类私有构造函数和静态最终字段。
<code class="java">public final class Constants { private Constants() {} public static final double PI = 3.14159; public static final double PLANCK_CONSTANT = 6.62606896e-34; }</code>
这种方法使常量保持私有,但可以通过静态导入轻松访问。
<code class="java">import static Constants.PLANCK_CONSTANT; import static Constants.PI; public class Calculations { public double getReducedPlanckConstant() { return PLANCK_CONSTANT / (2 * PI); } }</code>
因此,虽然接口常量可能看起来很有趣,但应该避免使用它们由于潜在的设计缺陷。使用带有 static Finals 的私有类来维护干净灵活的代码库。
以上是为什么在 Java 中应避免使用常量接口?的详细内容。更多信息请关注PHP中文网其他相关文章!