泛型数组的问题(即它们的不可能性)对我来说似乎是一个反复出现的主题。下面是一个HashMap数据结构的相关代码。显然,我不能声明 a Bucket[]
,因为泛型数组是不可能的。但是,我可以声明一个MapThing.Bucket[]
. 当我断言这是一种好习惯时,我是否正确,因为即使MapThing.Bucket[]
是原始类型声明,实际MapThing.Bucket[]
实例也是由其封闭实例类型参数化的?
感谢您的任何见解!
克里斯
public class MapThing<K, V> {
private Bucket buckets[];
public static void main(String[] argv) {
MapThing<String, Integer> thing = new MapThing<>();
thing.put("got your number", 8675309);
}
@SuppressWarnings("unchecked")
public MapThing() {
buckets = new MapThing.Bucket[314159];
}
public void put(K key, V value) {
Bucket bucket = new Bucket(key, value);
// Prints typeof bucket key: String, value: Integer
System.out.println("typeof bucket key: "
+ bucket.getKey().getClass().getSimpleName() + ", value: "
+ bucket.getValue().getClass().getSimpleName());
buckets[Math.abs(key.hashCode() % buckets.length)] = bucket;
}
private class Bucket {
private K key;
private V value;
Bucket(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue() {
return value;
}
}
}