有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在接口中定义常量意味着什么?

我知道在Java中,有人可以通过声明public static final在接口中包含常量。但是,假设我有一个名为I的接口,它只包含公共静态final常量,没有方法签名,还有一个名为C的类。为什么我要在C中实现I?i、 e.我为什么要这样做:

public class C implements I

既然常量是公共的和静态的,我就不能通过I直接访问它们吗


共 (3) 个答案

  1. # 1 楼答案

    这是一种Java模式,允许您从接口访问常量,而无需反复键入该接口的名称。这种模式早在enum进入语言之前很多年就已经存在了

    有些人认为它是有问题的,因为它导致创建不指定合同的接口。

  2. # 2 楼答案

    这种(反)模式很有用,因为它允许您使用这些常量的名称,而不必在它们前面加I.。这曾经是一种常见的技术,但现在可以使用import static导入常量,就像它不受欢迎一样。避免使用它的原因之一是,常数集实际上不是一个接口——它只是一组值——而将它变成一个接口可以让你做一些奇怪的事情,比如写东西

    ConstantInterfaceWithNoMethods m = new ClassImplementingThatInterface;
    

    或者

    if (m instanceof ConstantInterfaceWithNoMethods)
    

    这在这种情况下是没有意义的

    希望这有帮助

  3. # 3 楼答案

    一般来说,你不需要这么做。一个原因可能是,接口I是一个“标记接口”