可能重复:
在Java集合中存储原始值?
在java中我使用以下内容: -
public HashMap<char, int> buildMap(String letters)
{
HashMap<char, int> checkSum = new HashMap<char, int>();
for ( int i = 0; i < letters.length(); ++i )
{
checkSum.put(letters.charAt(i), primes[i]);
}
return checkSum;
}
Run Code Online (Sandbox Code Playgroud)
我收到与不适当类型有关的错误.我分别使用Character和Integer而不是char和int解决了我的问题.但是,我无法弄清楚为什么HashMap无法处理原始数据类型.
Mik*_*uel 120
通用参数只能绑定到引用类型,而不是基本类型,因此您需要使用相应的包装器类型.试试吧HashMap<Character, Integer>.
但是,我无法弄清楚为什么HashMap无法处理原始数据类型.
这是由于类型擦除.Java从一开始就没有泛型,所以a HashMap<Character, Integer>真的是一个HashMap<Object, Object>.编译器会执行一系列额外的检查和隐式转换,以确保您不会输入错误类型的值或输出错误的类型,但在运行时只有一个HashMap类,它存储对象.
其他语言的"特殊化"类型在C++中,a vector<bool>与vector<my_class>内部非常不同,它们没有共同的vector<?>超类型.Java定义了一些东西,因此无论与向前通用代码的向后兼容性是什么,a List<T> 都是一样的 .这种向后兼容性要求必须为泛型类型的所有参数化提供单个实现类,这防止了允许泛型参数绑定到基元的模板特化类型.ListT
Sri*_*ati 13
泛型不能以关键字的形式使用原始类型.
使用
public HashMap<Character, Integer> buildMap(String letters)
{
HashMap<Character, Integer> checkSum = new HashMap<Character, Integer>();
for ( int i = 0; i < letters.length(); ++i )
{
checkSum.put(letters.charAt(i), primes[i]);
}
return checkSum;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107420 次 |
| 最近记录: |