为什么Java编译器不喜欢原始int作为HashMap中值的类型?

Rom*_*man 27 java types integer hashmap

编译器抱怨这段代码:

    HashMap<String,int> userName2ind = new HashMap<String,int>();
    for (int i=0; i<=players.length; i++) {
        userName2ind.put(orderedUserNames[i],i+1);
    }
Run Code Online (Sandbox Code Playgroud)

它写出"意外类型"并指出int.如果我替换intby Stringi+1by i+"1",编译就可以了.这里有什么问题?

Jon*_*eet 42

它很好Integer,但不是很好int- Java泛型只适用于引用类型,基本上:(

试试这个 - 虽然要知道它会包装一切:

HashMap<String,Integer> userName2ind = new HashMap<String,Integer>();
for (int i=0; i<=players.length; i++) {
    userName2ind.put(orderedUserNames[i],i+1);
}
Run Code Online (Sandbox Code Playgroud)