Java:接口中可以定义常量变量吗?

9

我能在接口中创建 public static final 变量吗? 我可以在这些文件中定义一些常见的常量值吗?


这不是一件很简单的事情吗,只需要“尝试”一下就可以了吧?你有一个可用的编译器,对吧? - Greg Hewgill
抱歉,我必须重新表达一下。我已经尝试过并且它有效。但是我更想知道这是否是一个好的实践方法。 - kiki
可能是重复的问题:常量集合应放在类还是接口中? - Greg Hewgill
3个回答

14

可以,你可以这样做:

public interface Constants
{
    public static final int ZERO = 0;
}

然而,现在普遍认为这不是一个好主意。如果接口也有一个真正的目的,并且常量可能会被大多数实现使用,那么情况就不会太糟糕。但仅仅为了更容易地访问常量引入接口是对接口目的的滥用。 (这曾经经常发生。)


那么解决方案是什么呢?只是为了定义这些常量而定义另一个类吗? - kiki
@kiki:这取决于具体情况。有时候枚举类型可以很好地代替常量。有时将它们放在自然存在的接口中也是一样干净利落的。有时只需将其与最相关的类保持在一起。有时需要创建一个新类。 - Jon Skeet
1
如果您仅实现接口是为了避免在方法前加上接口名称的话。 - Maurice Perry

1

是的,你可以在接口中保留常量。顺便说一下,这被认为不是很好的做法。


1
当然,public常量可以在接口内声明使用。但是,如果您的接口只是用于常量的占位符,请改用enum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接