日期:2014-05-20  浏览次数:20715 次

java final 参数 ,竟然也会被修改!
本人C++转过来 C++中把参数作为引用传进来常有,但为防止修改经常是
fun(const int& i)
{}


java中

class abc
{
int i=0;
}

static void funParameter(final abc i)
{
i.i=999;
}

public static void main(String[] args)
{
abc a = new abc();
funParameter(a);
System.out.print(a.i);
}

i的值竟然被修改了,什么情况?
------解决方案--------------------
static void funParameter(final abc i)
{
i.i=999;
}

这final 修饰的是"abc",里面的123 是可以改变的,但是"abc"自身不能变

如果这么改i.i=999; -->abc = new abc(); 是不能通过编译的