当你不想改变对象的值时,可以从新clone一个呀

解决方案 »

  1.   

    你有没有听说过singleton方法?
     定义一个类,它的构造函数为private的,它有一个static的private的该类变量,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。例如:
    private staitc SingleClass _instance = null;private SingleClass() {}public static SingleClass getInstance() {
        if (_instance == null) {
         _instance = new SingleClass();
        }
        return _instance;
    }public String getMethod1() {}
    public ArrayList getMethod2() {}
      

  2.   

    还是把原文给你吧!
    Singleton模式主要作用是保证在Java应用程序中,一个Class只有一个实例存在。一般有两种方法:
     定义一个类,它的构造函数为private的,所有方法为static的。其他类对它的引用全部是通过类名直接引用。例如:
    private SingleClass() {}
    public static String getMethod1() {}
    public static ArrayList getMethod2() {}
     定义一个类,它的构造函数为private的,它有一个static的private的该类变量,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。例如:
    private staitc SingleClass _instance = null;private SingleClass() {}public static SingleClass getInstance() {
        if (_instance == null) {
         _instance = new SingleClass();
        }
        return _instance;
    }public String getMethod1() {}
    public ArrayList getMethod2() {}
      

  3.   

    因为java一定是按引用传递的,所以你的程序中的值会变。为此,你要么把ModelA和ModelB写成singleton模式,(用第二种),要么在amap.put的时候不要把aModel传进去,而是clone一个传进去。
      

  4.   

    哦,不对!你并不是一个类只要一个对象,你应该clone一个aModel,并把它put到你的aMap中。
      

  5.   

    是使用了同一个指针,但java里好像没有指针这一说法。
    aModel是个句柄,指向用new创建的那个实例。对aModel的改变就是对实例的改变。