java在接口中定义常量意味着什么?
我知道在Java中,有人可以通过声明public static final
在接口中包含常量。但是,假设我有一个名为I
的接口,它只包含公共静态final常量,没有方法签名,还有一个名为C
的类。为什么我要在C中实现I?i、 e.我为什么要这样做:
public class C implements I
既然常量是公共的和静态的,我就不能通过I
直接访问它们吗
你可以在下面搜索框中键入要查询的问题!
我知道在Java中,有人可以通过声明public static final
在接口中包含常量。但是,假设我有一个名为I
的接口,它只包含公共静态final常量,没有方法签名,还有一个名为C
的类。为什么我要在C中实现I?i、 e.我为什么要这样做:
public class C implements I
既然常量是公共的和静态的,我就不能通过I
直接访问它们吗
# 1 楼答案
这是一种Java模式,允许您从接口访问常量,而无需反复键入该接口的名称。这种模式早在
有些人认为它是有问题的,因为它导致创建不指定合同的接口。enum
进入语言之前很多年就已经存在了# 2 楼答案
这种(反)模式很有用,因为它允许您使用这些常量的名称,而不必在它们前面加
I.
。这曾经是一种常见的技术,但现在可以使用import static
导入常量,就像它不受欢迎一样。避免使用它的原因之一是,常数集实际上不是一个接口——它只是一组值——而将它变成一个接口可以让你做一些奇怪的事情,比如写东西或者
这在这种情况下是没有意义的
希望这有帮助
# 3 楼答案
一般来说,你不需要这么做。一个原因可能是,接口
I
是一个“标记接口”