如何定义一个常量数组?
你可以会建议:public static final String[] STR_LIST =
{ "VIEW1", "VIEW2"};
但是,其实STR_LIST的内容,还不是常量,
即我还是可以改变STR_LIST数组里的内容
如STR_LIST[0] = "VIEW3"; 是允许的
那么,怎么才能定义正真的常量数组呢?它的元素都不能被修改? --------------------编程问答-------------------- public final String[] STR_LIST =
{ "VIEW1", "VIEW2"};
final 就是指常量!
static 指的是类变量! --------------------编程问答-------------------- 加不加static不是讨论的范围
兄弟啊,你先试试STR_LIST 的内容是否可以修改,再回答问题好不好?~~~:) --------------------编程问答-------------------- 关注。 --------------------编程问答-------------------- 没办法。
除非你自己写个类,自己维护里面的数组。 --------------------编程问答-------------------- STR_LIST 不能更改。
但是 STR_LIST[0] 可以。
可以用枚举型达到LZ的目的。
或者用 getString(int index) --------------------编程问答-------------------- 本身Java语法没有办法指定数组的内容不可修改,你的需求无法满足。数组已经属于对象的范围,对象里面的数值是允许改变的。
除非像楼上说的,自己写个类然后维护里面的数组,或者用枚举enum --------------------编程问答-------------------- 自己写个类来维护
public final class FinalArray {
private static final String[] STR_LIST = { "VIEW1", "VIEW2"};
public static String[] getArray(){
return STR_LIST;
}
}
用的时候直接
String[] STR_LIST = FinalArray.getArray();
对于public static final String[] STR_LIST = { "VIEW1", "VIEW2"};
只是说STR_LIST这个引用只能指向{ "VIEW1", "VIEW2"}这个对象,但并没限制该对象不能更改,只是限定该引用不能指向其他对象而已
--------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 不好意思,写成这样的类也是不行的,呵呵,小汗一个~~这样写跟直接public static final String[] STR_LIST = { "VIEW1", "VIEW2"}; 没什么区别 --------------------编程问答-------------------- final被修饰的对象引用"不变",这个对象本身的状态是可以改变的..所以不成立 --------------------编程问答-------------------- 不能定义 --------------------编程问答-------------------- 不好意思测试!!刷新不了~~ --------------------编程问答-------------------- Java不存在常量数组,用Unmodifable List代替,如:
--------------------编程问答-------------------- java中不存在 --------------------编程问答-------------------- up --------------------编程问答-------------------- 有那么麻烦?如果两个不如就定两个变量,曲线救国。 --------------------编程问答-------------------- java 中没有常量数组吧 --------------------编程问答-------------------- public static final String[] STR_LIST = { "VIEW1", "VIEW2"}; 和通过函数获取数组有啥区别? --------------------编程问答-------------------- 这种情况直接用枚举类更方便啊
List<Integer> l = Collections.unmodifiableList(new ArrayList<Integer>());
l.add(1); // 该行抛出UnsupportedOperationException运行时异常
enum --------------------编程问答-------------------- Use Enum. --------------------编程问答-------------------- 好像不行啊,给数组提供一个get方法 --------------------编程问答-------------------- 数组的值都是可以改变的 --------------------编程问答-------------------- 单独一个包 private属性 然后不提供get方法不就OK了 private static final xxx OK
补充:Java , Java SE