【发布时间】:2026-01-03 05:40:01
【问题描述】:
从 Java 8 开始,我们可以在接口中使用默认方法和静态方法。
常量接口模式是对被称为常量接口反模式的接口的不良使用。
>Effective Java,第 17 项:
常量接口模式是接口使用不当。一个类在内部使用一些常量是一个实现细节。 实现一个常量接口会导致这个实现细节 泄漏到类的导出 API 中。对它没有任何影响 一个类的用户认为该类实现了一个常量接口。在 事实上,它甚至可能使他们感到困惑。更糟糕的是,它代表了一种承诺:如果 在未来的版本中,该类被修改,使其不再需要 要使用常量,它仍然必须实现接口以确保 二进制兼容性。如果一个非final类实现了一个常量 接口,它的所有子类的命名空间都会被污染 通过接口中的常量。
java平台库中有几个常量接口, 例如 java.io.ObjectStreamConstants。这些接口应该是 视为异常,不应仿效。
如果使用常量接口是一种不好的做法,那么何时使用接口静态方法可能会成为一种不好的做法?
【问题讨论】: