存储和访问大量常量的最佳方法

时间:2018-01-05 02:36:35

标签: java class constants

以制作游戏为例,我想要存储很多常量。我也希望很多类能够访问这些常量。什么是存储和访问所有这些值的最佳方式。目前,我只是将最终值存储在一个单独的类中,然后创建一个存储常量的类的实例。要访问值,我会做“objectName.nameOfConstant”。所以我的问题是,它们是存储所有这些常数的正式方法还是更好的方法。

2 个答案:

答案 0 :(得分:3)

一种可能的解决方案是拥有一个具有静态属性的类,因此您不需要创建实例。 e.g:

public class Status {

 public static final String ACTIVE = "ACTIVE";
 public static final String INACTIVE = "INACTIVE";}

可以直接调用:Status.ACTIVE或Status.INACTIVE

第二种可能的解决方案是使用Enum。

public enum Status {
  ACTIVE, INACTIVE;
}

使用静态字符串很简单,但没有类型检查。例如,当您想将常量作为方法输入参数时:

public void process(String input, String status)

使用枚举时

public void process(String input, Status status)

Enum将确保您的输入来自枚举列表。虽然静态字符串无法检查它,因此该方法的用户可以在" status"中放置任何值,并且您需要确保该方法在值意外时不会中断。

答案 1 :(得分:2)

您可以考虑使用接口在其中存储constance值。

起初它可能看起来很奇怪,但界面提供了许多有用的默认设置来存储const变量,例如

  • 默认最终值
  • 默认情况下的静态和公共访问
  • 不需要类实例

见下面的代码示例

public interface OlympicMedal
{
  String GOLD = "Gold";
  String SILVER = "Silver";
  String BRONZE = "Bronze";
}

//some other file
import static xx.OlympicMedal;

public class OlympicAthlete 
{
  ...
  public static boolean isWinner(String medal) {
    return OlympicMedal.GOLD.equals(medal);
  }
}

** 重要提示:您应该 NOT 以继承方式使用Const接口(请参阅下面的代码),这被称为接口模式,并认为是差的实践

public class OlympicAthlete implements OlympicMedal  // NOT recommended
{
   ...
}