Java 如我的代码示例所示,将应用程序设置为常量是否正确?
VS.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更适合用于存储常量值。这是一个很好的存储方式,因为我显示或我误解了什么 编辑。 我认为最好将所
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的名称让我想到了一些通用的东西。我在这里看到两个案例:
Java中的枚举是类型安全的,并且有自己的n
AppConst height = AppConst.HEIGHT;
if (height == AppConst.HEIGHT){
System.out.println("Hello World!");
}