final能够相当不错的解决问题,但是如果可以得到a,b中真正关心的简单数据类型的话,还是建议利用简单数据类型作为参数传递。
@.@||~
@.@||~
解决方案 »
- 菜鸟级容器遍历
- 菜鸟求助java内部类问题~~~~
- 请教怎样将消息发送到一个并未通过java程序与我建立连接的机器上
- 关于Inner classes 和 abstract class 的问题:
- 魔鬼女郎--妞妞 Applet和路径的问题 大虾们来看看~!~
- 请问要如何选中一条直线
- JDBC疑问:建立连接时不能连上DatebaseName所表示的数据库!!!
- JB6的设置问题!帮忙呀~~
- 怎样在windows下把 " \" 转换为"\\"存入mysql数据库中,多谢!!
- 请问怎么解决JBuilder4中输入法自动切换的问题?
- 800分 求一手机铃声 MMF格式
- *** 据你所知,跨平台的语言有哪些?
你误解我的意思了。。我是要把 对象传到函数里面去, a、b 只是举个例子罢了。对于 传进的那个对象,我是不想让函数修改他所有的成员。
~~~~~~~~~~~~~~~~~~这里的final只说明x不能赋予新的KK对象。
如果a,b是public,人家还是可以修改的。
好的方法是,你要使用private或protected保护起来。
class KK{
final int a=0;
final int b=0;
}
class Test{
public static void main(String[] arg){
KK k0=new KK();
method(k0);
}static void method(KK k){
//k.a=1;
//k.b=2;
}
}
-----------------
class KK{
private int a;
private int b;
}
class Test{
public static void main(String[] arg){
KK k0=new KK();
method(k0);
}static void method(KK k){
//k.a=1;
//k.b=2;
}
}
即使不用final也改不了x(x的a和b可以改)class KK{
private int a;
private int b;
public KK(int a,int b){
this.a = a;
this.b = b;
}
}void f(KK x){
x.setA(1);
x.setB(2); //如果不提供set方法,就不能改了
}