-2
我有一個HashMap
基本上試圖存儲基於對象的名稱的對象作爲關鍵。但是,第一次當對象不在HashMap
而不是重新調整我null
它返回object
。因此,它永遠不會去創建一個新的對象,並永遠不會把它放在HashMap
- 我希望它返回null
。當使用Hashmaps,並訪問基於密鑰的值
這是我的代碼...
private static Map<String, SObj> MComponentCache = Collections.synchronizedMap(new HashMap<String, Sobj>());
static SObj getSObj(String cName) {
SObj cmp = null;
String pKey = "Component:" + cName.intern();
cmp = MComponentCache.get(cName);
synchronized (pKey){
if (cmp == null){
cmp = new SObj(cName);
MComponentCache.put(cName, cmp);
}
}
return cmp;
}
任何人都可以請幫我糾正。
它回報你什麼?我不明白'HashMap'如果不包含密鑰,它不會返回'null';實際上並不是'HashMap'的工作原理。 –
真的,它返回一個你沒有放在那裏的對象?什麼對象? –
在'pKey'上同步不會做你認爲它做的事,因爲它沒有被執行。 'cName' * *是實習的,但那不是您同步的對象。 – dasblinkenlight