制作静态常量的正确方法

时间:2014-08-02 05:49:49

标签: java

我不知道,您认为宣布一组常数的最佳(或最公认)方式是什么?

通常,我创建一个名为Constants的静态类,并且假设我希望对象可以是type_a或type_b或type_c。什么是正确的方式?

public class Constants{
          public static enum TYPE{ A, B, C};
}

public class Constants{
          public static int TYPE_A = 0;
          public static int TYPE_B = 1;
          public static int TYPE_C = 2;
}

public class Constants{
          public static int type[] = new int {"A", "B", "C"};
}

public class Constants{
          public class Type{
                 public static int A = 0;
                 public static int B = 1;
                 public static int C = 2;
          }
}

你说什么?

由于

3 个答案:

答案 0 :(得分:1)

  • 你可以让interface包含常量,但这是一个该死的反模式。

  • 您可以让class包含常量,您可以使用MyClass.constant来访问值,但这又是一个反模式。

现在上面反模式的解决方案是使用static import,这在这种情况下适合使用。

  • 第三个,我最喜欢的一个是Enum,它提供了许多有趣的东西,最重要的是ThreadSafety。所以请考虑这是一个建议。

Enum

的一些好处
  • ThreadSafety
  • 枚举常量使代码更具可读性。
  • 安全类型
  • 订购等。

原因为什么?

Should you always use enums instead of constants in Java?

答案 1 :(得分:0)

在Java中,您可以通过两种方式创建常量 1.在变量之前使用静态最终修饰符

public static final int CONSTANT = 100;

现在,如果有很多类访问它,你可以在界面内声明它。

2.第二种选择是使用枚举。我更喜欢这个,因为它有许多优点。您可以拥有构造函数和方法,还可以使用内置API来执行许多操作。它们也是线程安全的。所以我会推荐枚举。

答案 2 :(得分:-1)

我通常只为我的常数做public static final int FOO = 42

如果我有多个类并且常量在Bar类中,我可以从任何具有Bar.FOO的类访问它们(如果我导入或使用完全限定的名称,甚至可以从包外部访问它们)。 / p>