六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 42|回复: 0

说说final

[复制链接]

升级  13%

73

主题

73

主题

73

主题

举人

Rank: 3Rank: 3

积分
239
 楼主| 发表于 2013-1-27 05:06:50 | 显示全部楼层 |阅读模式
final 这个关键字从学Java开始就有提及。它可以用来修饰class, method, method parameter, variable等。这里主要说说最后这一种。
对于有final 修饰的variable, 无论是instance variable 还是local variable, 其含义是说(一般)一经初始化和赋值,其值就无法改变。这里,对于instance variable, 我们说,这“初始化和赋值”可能是在声明时就完成的,也可以是在构造函数中完成的。
然而,这个一般无法改变的值却是可以改变的。在JSR 133 中提到了用反射改变final 的instance field 的方法。这里截取的是那里面的例子:
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 95%; padding-top: 4px;">class A ...{
final int x;
A() 
...{
= 1;
}

int f() ...{
return d(this,this);
}

int d(A a1, A a2) ...{
int i = a1.x;
g(a1);
int j = a2.x;
return j - i;
}

static void g(A a) ...{
// uses reflection to change a.x to 2
}
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表