У меня есть следующий фрагмент кода Java, использующий HashMap и generics:
import java.util.*;
import java.io.*;
public class Map{
static HashMap<Integer, Integer> imap;
static HashMap<Integer, Thing> tmap;
public static void main(String[] args){
imap = new HashMap<Integer, Integer>();
imap.put(0,0);
Integer i = imap.get(0);
i = i + 1;
System.out.println(imap.get(0));
tmap = new HashMap<Integer, Thing>();
tmap.put(0,new Thing(0));
Thing t = tmap.get(0);
t.a = t.a + 1;
System.out.println(tmap.get(0).a);
}
}
class Thing{
public int a;
public Thing(int n){
this.a = n;
}
}
, который печатает следующее:
0
1
Я ожидаю, что он напечатает оба варианта (если я изменял ссылку) или оба ноля (если я изменял значения)Так почему же поведение для карты отличается от целого числа к целому, чем от целого числа к вещи?