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