,如果我有这样的事情java的新手问题
Map<String, Foo> foos;
...
Foo f = foos.get("key1");
foos.removeAll();
我仍然能够做到String s = f.getSomeProperty();
,如果我有这样的事情java的新手问题
Map<String, Foo> foos;
...
Foo f = foos.get("key1");
foos.removeAll();
我仍然能够做到String s = f.getSomeProperty();
foos
仅保留对象的引用,而不是全部对象。如果您从foos
获得某些内容,则可以获得该对象的引用,并且可以对其进行修改。如果您从foos
中删除所有元素,则它不再保留任何引用,只有在没有其他引用时才可以垃圾收集这些对象。
是的,你是。您只是清除了地图,但本地变量f
仍然对Foo
有效,您仍然可以使用它。
请注意,String(注意大写字母S)是表示字符串的Java类的名称。但是,是的,是的。
简单的答案是肯定的。 f
包含对foos.Get("key1")
返回的对象的引用(假设它非空)。当您从foos
中删除全部内容时,只需删除foos
对象中的引用即可 - 实际上并未销毁foos
用于包含的数据。
是f是Foo对象,如果美孚具有一定的属性,是字符串中使用它
代码:
Map<String, Integer> mp = new HashMap<String, Integer>();
mp.put("key1", 48);
mp.put("key2", 50);
mp.put("key3", 52);
mp.put("key4", 54);
mp.put("key5", 56);
mp.put("key6", 58);
Integer mytemp = mp.get("key1");
mp.clear();
System.out.println(mytemp);
日期:
48
即见MYTEMP是你的f是完整的对象不仅指针
当您尝试时会发生什么? – AutomatedTester 2009-12-02 15:11:09
请注意,按照Java约定,类以大写字符开头,而方法以较低的骆驼大小写。由于Java是区分大小写的,因此您需要正确使用它们;你的代码片段中的三行都不会编译,因此... – 2009-12-02 15:13:29