我知道在 Java 中,有人可以通过声明 public static final
将常量包含在接口(interface)中。但是,假设我有这样一个接口(interface),名为 I
,它只包含 public static final 常量,没有方法签名,还有一个名为 C
的类。为什么我要在 C 中实现 I?即我为什么要执行以下操作:
公共(public)类 C 实现 I
既然常量是公共(public)的和静态的,难道我不能通过 I
直接访问它们吗?
最佳答案
这个(反)模式很有用,因为它允许您使用这些常量的名称,而不必在它们前面加上 I.
。这曾经是一种常见的技术,但现在您可以使用 import static
以同样的方式导入常量,它已经失宠了。避免它的一个原因是常量集实际上不是一个接口(interface)——它只是一堆值——并且使它成为一个接口(interface)可以让你做一些奇怪的事情,比如写
ConstantInterfaceWithNoMethods m = new ClassImplementingThatInterface;
或
if (m instanceof ConstantInterfaceWithNoMethods)
这在这种情况下是没有意义的。
希望这对您有所帮助!
关于java - 在接口(interface)中定义常量是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10607305/