java 中的 final 在这种情况下表示何种含义啊?

wuyue-tiger 2002-09-29 12:03:01
public static synchronized void debug(final Object message) {
new Thread(new Runnable() {
public void run() {
System.out.println(message);
}
}).start();
}
...全文
75 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
DanielYWoo 2002-09-29
  • 打赏
  • 举报
回复
〉tigeryu(吴越小虎) 但是我可以修改啊
对不起,我没仔细看清楚
又丑了,呵呵
forjie 2002-09-29
  • 打赏
  • 举报
回复
对于数值变量而言,如加上Final则表示声明其为常量。
对于对象变量,则不可以对该对象变量重新分配空间。(但是可以更改该对象中属性的值)
对于函数而言,如加上Final则表示该函数不可以在子类中被覆盖。

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

关于上面的问题:
我想你想说的是在方法中定义的类而不是内部类。(class defined in method not inner class),这是java的规定,我想可能是为了解决动态联编方面的难题吧。反正你就记着就可以了。
关于内部类,完全可以访问上级类中不是final的属性。
wuyue-tiger 2002-09-29
  • 打赏
  • 举报
回复
为什么用了 final 后才能被内部定义的类引用,如第一个例子中的message
wuyue-tiger 2002-09-29
  • 打赏
  • 举报
回复
但是我可以修改啊
public static void test(final HashMap hm)
{
hm.put("aaa", "aaa");
}

HashMap hm = new HashMap();
test(hm);
System.out.println(hm);

打印出 {aaa=aaa}
怎么说呢
DanielYWoo 2002-09-29
  • 打赏
  • 举报
回复
相当于C++的
void read_only_method() const
arnange 2002-09-29
  • 打赏
  • 举报
回复
有道理
AYellow 2002-09-29
  • 打赏
  • 举报
回复
表示message对象在这个方法中不能修改

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧