Java 如我的代码示例所示,将应用程序设置为常量是否正确?

Java 如我的代码示例所示,将应用程序设置为常量是否正确?,java,enums,constants,Java,Enums,Constants,VS. public enum AppConst{ WIDTH (1280), HEIGHT (800); private final int value; AppConst(int value) { this.value = value; } private int get() { return value; } } 我读到enum更适合用于存储常量值。这是一个很好的存储方式,因为我显示或我误解了什么 编辑。 我认为最好将所

VS.

public enum AppConst{
    WIDTH (1280),
    HEIGHT (800);

    private final int value;

    AppConst(int value) {
        this.value = value;
    }
    private int get() { return value; }
}
我读到
enum
更适合用于存储常量值。这是一个很好的存储方式,因为我显示或我误解了什么

编辑。 我认为最好将所有这些值放在一个地方,因为如果需要,我们可以很容易地修改它们。我错了吗

EDIT2.
AppConst旨在成为一个存储所有值的地方,这些值不应该是“幻数”。例如windows坐标等。我计划可能会有一些字段,如DAYS_IN_WEEK=7,MAX_smth=

使用
枚举
而不是
静态最终
变量的主要好处是处理安全需要的方法参数限制。下面是一个例子:

public class AppConst{
    public static final int WIDTH = 1280;
    public static final int HEIGHT = 800;
}
VS

第二个限制可接受的
int
值,在您的示例中为800和1280

因此,根据您的需要,枚举可能比静态常量更安全

此外,由于您没有将行为引入枚举,您可以很快编写:

public void myMethod(AppConst width, AppConst height){}

使用
枚举
而不是
静态最终
变量的主要好处是在处理安全需要的方法参数限制时。下面是一个例子:

public class AppConst{
    public static final int WIDTH = 1280;
    public static final int HEIGHT = 800;
}
VS

第二个限制可接受的
int
值,在您的示例中为800和1280

因此,根据您的需要,枚举可能比静态常量更安全

此外,由于您没有将行为引入枚举,您可以很快编写:

public void myMethod(AppConst width, AppConst height){}

枚举表示枚举类型;也就是说,一种仅由有限的已知值集组成的数据类型。如果要添加多个“位”信息,则将数据添加到枚举非常有趣:

公共枚举性别 男(“男”、“男”、“先生”), 女性(“女性”、“女性”、“女士”)

}

通常,使用一个变量表示对象,并打开其值

我想在你的例子中,你只需要两个众所周知的整数值,所以我会选择静态的final int


请注意,@PremGenEditor指出,您可能会遇到宽度和高度发生变化的情况,因此它们可能最终只是某个对象的另一个属性;它们自然是一个int。

枚举表示枚举类型;也就是说,一种仅由有限的已知值集组成的数据类型。如果要添加多个“位”信息,则将数据添加到枚举非常有趣:

公共枚举性别 男(“男”、“男”、“先生”), 女性(“女性”、“女性”、“女士”)

}

通常,使用一个变量表示对象,并打开其值

我想在你的例子中,你只需要两个众所周知的整数值,所以我会选择静态的final int

请注意,@PremGenEditor指出,您可能会遇到宽度和高度发生变化的情况,因此它们可能最终只是某个对象的另一个属性;它们自然是一个整数。

对于实值常量,就像你的一样,这有点过分了。对枚举类型使用枚举,如状态或其他

回想当年,你可能做过这样的事情:

  private String genderName;
  private String genderPerson;
  private String genderTitle;

  ....
但这不是类型保存。您还可以将其与不存在的值进行比较(例如
4
)。使用枚举时,您不需要这样做,而且您的代码更具可读性:

public static final int STATUS_OKAY = 0;
public static final int STATUS_ERROR = 1;
public static final int STATUS_WARNING = 3;

public static final int SOMETHINGELSE = 0;

// ...

if (getStatus() == STATUS_OKAY){
    // Do something...
}
if (getStatus() == 4) // This is NEVER true! Still it's allowed
意图变得更加明确,您可以获得更好的代码,并且可以为枚举常量提供编译时安全性


在您的示例中,
WIDTH
HEIGHT
只是常量值,您可以将它们存储为常量字段。

对于像您这样的实值常量,这有点过分了。对枚举类型使用枚举,如状态或其他

回想当年,你可能做过这样的事情:

  private String genderName;
  private String genderPerson;
  private String genderTitle;

  ....
但这不是类型保存。您还可以将其与不存在的值进行比较(例如
4
)。使用枚举时,您不需要这样做,而且您的代码更具可读性:

public static final int STATUS_OKAY = 0;
public static final int STATUS_ERROR = 1;
public static final int STATUS_WARNING = 3;

public static final int SOMETHINGELSE = 0;

// ...

if (getStatus() == STATUS_OKAY){
    // Do something...
}
if (getStatus() == 4) // This is NEVER true! Still it's allowed
意图变得更加明确,您可以获得更好的代码,并且可以为枚举常量提供编译时安全性



在您的示例中,
WIDTH
HEIGHT
只是常量值,您可以将它们存储为常量字段。

通常使用枚举来包含相同类型实体的一组值。虽然这可能仍然适用于仅具有宽度和高度的情况,但如果需要为背景色添加新的应用程序常量,则不再适用

类AppConst的名称让我想到了一些通用的东西。我在这里看到两个案例:

  • 如果你真的打算在将来将其用于其他额外用途 那些和维度无关的常数,我会 绝对选择静态选项
  • 如果您计划仅对这两个常量使用此选项,我 然后将使用不同于AppConst的名称,这给出了一个想法 我们谈论的是维度

  • 通常,枚举用于包含同一类型实体的一组值。虽然这可能仍然适用于仅具有宽度和高度的情况,但如果需要为背景色添加新的应用程序常量,则不再适用

    类AppConst的名称让我想到了一些通用的东西。我在这里看到两个案例:

  • 如果你真的打算在将来将其用于其他额外用途 那些和维度无关的常数,我会 绝对选择静态选项
  • 如果您计划仅对这两个常量使用此选项,我 然后将使用不同于AppConst的名称,这给出了一个想法 我们谈论的是维度

  • Java中的枚举是类型安全的,并且有自己的n
    AppConst height = AppConst.HEIGHT;
    if (height == AppConst.HEIGHT){
      System.out.println("Hello World!");
    }