表示message对象在这个方法中不能修改

解决方案 »

  1.   

    相当于C++的 
    void read_only_method() const
      

  2.   

    但是我可以修改啊
      public static void test(final HashMap hm)
      {
        hm.put("aaa", "aaa");
      }      HashMap hm = new HashMap();
      test(hm);
      System.out.println(hm);打印出 {aaa=aaa}
    怎么说呢
      

  3.   

    为什么用了 final 后才能被内部定义的类引用,如第一个例子中的message
      

  4.   

    对于数值变量而言,如加上Final则表示声明其为常量。
    对于对象变量,则不可以对该对象变量重新分配空间。(但是可以更改该对象中属性的值)
    对于函数而言,如加上Final则表示该函数不可以在子类中被覆盖。关于上面的问题:
    我想你想说的是在方法中定义的类而不是内部类。(class defined in method not inner class),这是java的规定,我想可能是为了解决动态联编方面的难题吧。反正你就记着就可以了。
    关于内部类,完全可以访问上级类中不是final的属性。
      

  5.   

    对于数值变量而言,如加上Final则表示声明其为常量。
    对于对象变量,则不可以对该对象变量重新分配空间。(但是可以更改该对象中属性的值)
    对于函数而言,如加上Final则表示该函数不可以在子类中被覆盖。关于上面的问题:
    我想你想说的是在方法中定义的类而不是内部类。(class defined in method not inner class),这是java的规定,我想可能是为了解决动态联编方面的难题吧。反正你就记着就可以了。
    关于内部类,完全可以访问上级类中不是final的属性。
      

  6.   

    〉tigeryu(吴越小虎) 但是我可以修改啊
    对不起,我没仔细看清楚
    又丑了,呵呵