【发布时间】:2014-03-31 11:18:23
【问题描述】:
所以我知道通常可以创建一个通用数组:
E[] e = (E[]) new Object[10];
但是我有一个类Entrant<K, V>,它有两个通用参数。
我似乎无法将 Object 数组转换为它。
这是完整的代码和运行时的错误
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LHashTable.Entrant;
at HashTable.HashTable.<init>(HashTable.java:10)
at Mainy.map(Mainy.java:32)
Mainy 中的第 32 行:
HashTable h = new HashTable();
哈希表代码:
public class HashTable<K, V> {
Entrant<K, V>[] _entrants;
private static final int N = 16;
public HashTable() {
_entrants = (Entrant<K, V>[]) new Object[N]; //line 10
}
}
【问题讨论】:
-
您尝试执行的操作不起作用。
Object[]不是Entrant<K, V>[],所以你得到一个ClassCastException。看到这个问题:stackoverflow.com/questions/1817524/generic-arrays-in-java?rq=1 -
also.. 请遵循标准 Java 命名约定 - 例如 camelCase