final能够相当不错的解决问题,但是如果可以得到a,b中真正关心的简单数据类型的话,还是建议利用简单数据类型作为参数传递。
@.@||~

解决方案 »

  1.   

    NO! 你们误解了我知道在参数中用 final 但不知道用在哪个位置,请给个例子可以吗?
      

  2.   

    To: midthinker(思索者) 
      你误解我的意思了。。我是要把 对象传到函数里面去, a、b 只是举个例子罢了。对于 传进的那个对象,我是不想让函数修改他所有的成员。
      

  3.   

    void fun(final KK x)
    ~~~~~~~~~~~~~~~~~~这里的final只说明x不能赋予新的KK对象。
    如果a,b是public,人家还是可以修改的。
    好的方法是,你要使用private或protected保护起来。
      

  4.   

    是的,正因为 (final KK x) 这是使 KK 这个引用看成了“常量”,而不是内部的对象。我现在就是想问如何能使这个对象成为“常量”呢?还是没有这种方法??
      

  5.   


    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;
    }
    }
      

  6.   

    by value
    即使不用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方法,就不能改了
    }
      

  7.   

    那做不到java并没有像其它语言提供readonly的支持。