У меня возникают трудности с пониманием HashMap при использовании Object в качестве типа.Хранение объектов нескольких типов в HashMap и их получение
Здесь я создаю два объекта, строку и целое число, которое присваиваю значение. Затем я добавляю этот объект в HashMap. Затем изменяются значения строковых и целочисленных объектов. Но при попытке ссылаться на них, используя HashMap.get()
, он показывает исходные значения.
Я предполагаю, что каким-то образом при размещении значений на HashMap создается новый неизменный объект, созданный в экземпляре HashMap вместо связывания исходного исходного объекта?
Вот код:
import java.util.HashMap;
import java.util.Map;
public class Test1 {
//Create objects
static int integ=1;
static String strng="Hi";
//Create HashMap
static Map<String, Object> objMap = new HashMap(); //Map of shipments
public static void main(String[] args) {
//Insert objects in HashMap
objMap.put("integer", integ);
objMap.put("string", strng);
//Check the values
System.out.println(objMap.get("integer"));
System.out.println(objMap.get("string"));
//Change values of underlying object
integ=2;
strng="Bye";
//Check values again
System.out.println(objMap.get("integer"));
System.out.println(objMap.get("string"));
}
}
И выход:
debug:
1
Hi
BUILD SUCCESSFUL (total time: 8 seconds)
См. Http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – Benjamin