您的位置:首页 > 移动开发 > Objective-C

Java基础——Object使用

2012-08-16 18:14 239 查看
问题场景:Object中的 Value不是自己预期值。

具体描述:

     (1) 实例化一个HashMap类型的对象:      

HashMap<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("string", "string");
hashMap.put("intValue", 10);


     (2) 将该HashMap实例传递给别的类---classC:

classC.set(hashMap);


     (3) 类classC将该对象继续传递给别的类classA和classB:

classA.useObject(hashMap);
classB.useObject(hashMap);


     (4) classB在使用该对象的过程中发现:hashMap.get("intValue") 的值为 18。问题即在此处:为何此对象的该值从10变成了18?

解决过程:

     (5) 后来发现,在classA中执行了这样的语句:

private void useObject(HashMap<String, Object> hashMapPara){

HashMap<String, Object> hashMap = hashMapPara;
hashMapAnother.put("intValue", (Integer) hashMap.get("intValue") + 8);

}


       并且,classA的useObject(HashMap<String, Object> hashMapPara) 方法执行后 classB的hashMap.get("intValue")语句才执行;

     (6) 由此可见:  

            Java对象(Object)的传递,传递的为引用,而非真正的实例。

            new 一个实例,即建立一个物理意义上的Object, 使用 Object object = getObject();语句仅仅是将该实例的地址值得到,针对Object的操作实际上操作的最初new的那个物理意义上的实例。

            因此,如果传递一个Object给不同的两个类,两个类分别对该Object进行操作,尤其要注意Object的value改变的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: