接口常量与类常量变量

时间:2016-12-06 07:52:55

标签: java class interface constants

我想知道什么是最有可能使用的,是interface Constants还是class Constants

我的代码有interface,如下所示:

public interface IConstantsVariableSupport {
     public String URL = "www.sample-me.com";
     public Integer LIMIT = 50;
}

interface将支持所有需要其属性常量的class。而且我认为我可以在class中使用常量来执行此操作:

public class ConstantsVariableSupport {
     public final static String URL = "www.sample-me.com";
     public final static Integer LIMIT = 50;
}

所以我的问题是,当我们使用constants来支持其他类时,我会考虑采用什么方法。是使用interface还是class?或者,如果可能,您是否可以建议最佳实践来处理整个程序中易于使用的常量值。仅供参考我知道如何使用这两种方法,我只是想知道如何正确使用它。

2 个答案:

答案 0 :(得分:3)

首先,永远不要创建单个类或接口来转储所有常量。我知道它很诱人但是在1或2年后,这个常量文件将变得非常混乱和不可读。相反,如果变量与类具有非常紧密的关系,则最好将常量变量放在该类中。以下是 Joshua Bloch 的建议:

  

如果常量与现有类或接口紧密相关,则应将它们添加到类或接口。例如,所有带框的数字基本类(如Integer和Double)都会导出MIN_VALUE和MAX_VALUE常量。如果常量最好被视为枚举类型的成员,则应使用枚举类型导出它们。否则,您应该使用不可实例化的实用程序类导出常量。

答案 1 :(得分:0)

我总是喜欢选项#2 - 将常量放在一个类中。选项#1可以为您节省一些输入,因为您不需要明确指出您的类变量是public static final(暗示)。但是,请考虑一个界面实际上是什么 - it defines how you would interact with an object。因此,它的目的是关注行为