你可以会建议:
  public static final String[] STR_LIST = 
    { "VIEW1", "VIEW2"};但是,其实STR_LIST的内容,还不是常量,
即我还是可以改变STR_LIST数组里的内容
如STR_LIST[0] = "VIEW3"; 是允许的那么,怎么才能定义正真的常量数组呢?它的元素都不能被修改?

解决方案 »

  1.   

    public final String[] STR_LIST = 
        { "VIEW1", "VIEW2"}; final  就是指常量!
    static 指的是类变量!
      

  2.   

    加不加static不是讨论的范围兄弟啊,你先试试STR_LIST 的内容是否可以修改,再回答问题好不好?~~~:)
      

  3.   

    STR_LIST 不能更改。
    但是 STR_LIST[0] 可以。可以用枚举型达到LZ的目的。或者用 getString(int index)
      

  4.   

    本身Java语法没有办法指定数组的内容不可修改,你的需求无法满足。数组已经属于对象的范围,对象里面的数值是允许改变的。
    除非像楼上说的,自己写个类然后维护里面的数组,或者用枚举enum
      

  5.   

    自己写个类来维护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"}这个对象,但并没限制该对象不能更改,只是限定该引用不能指向其他对象而已
      

  6.   

    不好意思,写成这样的类也是不行的,呵呵,小汗一个~~这样写跟直接public static final String[] STR_LIST = { "VIEW1", "VIEW2"}; 没什么区别
      

  7.   

    final被修饰的对象引用"不变",这个对象本身的状态是可以改变的..所以不成立
      

  8.   

    Java不存在常量数组,用Unmodifable List代替,如:
    List<Integer> l = Collections.unmodifiableList(new ArrayList<Integer>());
    l.add(1);  // 该行抛出UnsupportedOperationException运行时异常
      

  9.   

    public static final String[] STR_LIST = { "VIEW1", "VIEW2"};  和通过函数获取数组有啥区别?
      

  10.   

    这种情况直接用枚举类更方便啊
    enum
      

  11.   

    好像不行啊,给数组提供一个get方法
      

  12.   

    单独一个包 private属性 然后不提供get方法不就OK了 private static final xxx OK