如何为包中的所有类共用一个常量变量?

时间:2010-10-12 10:11:37

标签: java

我希望一个常量变量对包中的所有类都是通用的。有没有一种方法可以做到这一点,而不是只使用其中的一个定义接口,并使每个类实现它?

7 个答案:

答案 0 :(得分:9)

在Java中,所有常量都必须驻留在类型(类或接口)中。但是你不必实现一个接口来使用在里面声明的常量。

你可以尝试将这样的东西放在你的包装中:

interface Constants {

    static final String CONSTANT = "CONTANT";

}

然后,像这样使用它:

String myVar = Constants.CONSTANT;

这样,您仍然拥有自己的界面,但没有类可以实现它。

答案 1 :(得分:5)

通常,应用程序有一个“常量”类或包含所有常量的接口。

我通常将常量分组为逻辑类。例如,如果有两种员工,常规和合同:

class EmployeeType
{
   public static final String REGULAR = "regular";
   public static final String CONTRACT = "contract";
}

并将其用作EmployeeType.REGULAR

如果常量不能以这种方式分组,请使用单独的类/接口来保存它们。

class Constants
{
   public static final String APPLICATION_DOMAIN = 'domain';
}

您无需扩展/实现此类接口即可使用这些值。常量通常会声明为public static final,您可以直接访问 Constants.APPLICATION_DOMAIN

答案 2 :(得分:2)

使用包私有类:

class Constants{

    public static final int MY_VALUE = 1234;

}

只能通过同一个包中的类访问:

int val = Constants.MY_VALUE;

答案 3 :(得分:1)

您可以通过各种方式执行此操作:

  • 一种方法(如此处所述)是创建一个全局常量接口,并且每个常量都有public static final个属性。
  • 创建属性文件。通过拥有属性文件,您将在换行符上声明每个键值对(由=运算符分隔)。这是关于如何创建和使用属性文件的tutorial

答案 4 :(得分:0)

似乎是一个很好的候选人,可以在我的财产档案中输入。

答案 5 :(得分:0)

您可以使用抽象类作为该包中每个impl的基类。

答案 6 :(得分:0)

你可以用这个变量创建一个特殊的(静态)类。稍后您可以添加其他常量或您需要的任何类。