但是我可以修改啊 public static void test(final HashMap hm) { hm.put("aaa", "aaa"); } HashMap hm = new HashMap(); test(hm); System.out.println(hm);打印出 {aaa=aaa} 怎么说呢
为什么用了 final 后才能被内部定义的类引用,如第一个例子中的message
对于数值变量而言,如加上Final则表示声明其为常量。 对于对象变量,则不可以对该对象变量重新分配空间。(但是可以更改该对象中属性的值) 对于函数而言,如加上Final则表示该函数不可以在子类中被覆盖。关于上面的问题: 我想你想说的是在方法中定义的类而不是内部类。(class defined in method not inner class),这是java的规定,我想可能是为了解决动态联编方面的难题吧。反正你就记着就可以了。 关于内部类,完全可以访问上级类中不是final的属性。
对于数值变量而言,如加上Final则表示声明其为常量。 对于对象变量,则不可以对该对象变量重新分配空间。(但是可以更改该对象中属性的值) 对于函数而言,如加上Final则表示该函数不可以在子类中被覆盖。关于上面的问题: 我想你想说的是在方法中定义的类而不是内部类。(class defined in method not inner class),这是java的规定,我想可能是为了解决动态联编方面的难题吧。反正你就记着就可以了。 关于内部类,完全可以访问上级类中不是final的属性。
void read_only_method() const
public static void test(final HashMap hm)
{
hm.put("aaa", "aaa");
} HashMap hm = new HashMap();
test(hm);
System.out.println(hm);打印出 {aaa=aaa}
怎么说呢
对于对象变量,则不可以对该对象变量重新分配空间。(但是可以更改该对象中属性的值)
对于函数而言,如加上Final则表示该函数不可以在子类中被覆盖。关于上面的问题:
我想你想说的是在方法中定义的类而不是内部类。(class defined in method not inner class),这是java的规定,我想可能是为了解决动态联编方面的难题吧。反正你就记着就可以了。
关于内部类,完全可以访问上级类中不是final的属性。
对于对象变量,则不可以对该对象变量重新分配空间。(但是可以更改该对象中属性的值)
对于函数而言,如加上Final则表示该函数不可以在子类中被覆盖。关于上面的问题:
我想你想说的是在方法中定义的类而不是内部类。(class defined in method not inner class),这是java的规定,我想可能是为了解决动态联编方面的难题吧。反正你就记着就可以了。
关于内部类,完全可以访问上级类中不是final的属性。
对不起,我没仔细看清楚
又丑了,呵呵