,如果我有這樣的事情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