Java中的常量

时间:2011-04-04 06:03:58

标签: java constants

如何声明一个数组,其中所有值(或对象)在java中都是常量。

例如: 假设[0]是常数,[1]是常数等等......

5 个答案:

答案 0 :(得分:7)

如何使用枚举?

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
    THURSDAY, FRIDAY, SATURDAY 
}

http://download.oracle.com/javase/tutorial/java/javaOO/enum.html

答案 1 :(得分:4)

你的意思是你不希望阵列可以修改吗?你不能。 Java不支持C ++风格的“const”概念。您必须使用某种只读集合。同样,您不能声明数组的元素只能以只读方式使用(即不会自行变异,这与更改数组以更改其中的元素不同)。

如果您向我们提供有关您尝试做的更多信息,我们可能会建议您采用其他方法。

答案 2 :(得分:3)

您可以将整个数组声明为常量,但不能声明该数组的内容。

解决问题的方法:使用unmodifiable List代替数组(如果可能)。这保证了存储的值不能被“替换”。

(这意味着:如果您存储对象,您仍然可以更改这些对象的属性,但您无法添加,删除或替换它们自己的对象。)

答案 3 :(得分:0)

使用关键字final在java中声明常量

例如。 final Stirng sr="hello";

答案 4 :(得分:0)

我认为我们可以通过这种方式实现这一目标。我建议创建一个带有私有final数组的类,并提供一个公共方法来读取数组的任何元素。这样您就可以限制用户修改您的值,因为您只设置了一个getter而没有提供setter。希望有所帮助!!!

class Constants {

private Constants(){
    throw new AssertionError("This class is not meant for instantiation");
}

private static final int[] myConstants = {3, 5, 8, 9, 23};

public static int getMyConstant(int i){
    return myConstants[i];
}

}

使用常量,如Constants.getMyConstant(index)

我仍然会说,Enum是存储常量的最佳方式。但是,在JDK5下面,上述实现可能会有所帮助。希望有所帮助!!!