可能重复:
Java如何:通用阵列创建
错误:通用阵列创建
我收到此错误:
Cannot create a generic array of T
Run Code Online (Sandbox Code Playgroud)
这是我的代码(第6行的错误):
1 public class HashTable<T> {
2
3 private T[] array;
4
5 HashTable(int initSize) {
6 this.array = new T[initSize];
7 }
8 }
Run Code Online (Sandbox Code Playgroud)
我想知道为什么会出现这个错误,并且是修复它的最佳解决方案.谢谢.
更新:
我调整了我的代码,以便数组代替链接列表,但我收到一个新的错误.
这是我的错误:
Cannot create a generic array of LinkedList<T>
Run Code Online (Sandbox Code Playgroud)
这是我的代码(第六行的错误):
1 public class HashTable<T> {
2
3 private LinkedList<T>[] array;
4
5 HashTable(int initSize) {
6 this.array = new LinkedList<T>[initSize];
7 }
8 }
Run Code Online (Sandbox Code Playgroud)
这个错误是出于同样的原因吗?我只是假设我可以创建通用链表并将它们存储在数组中.
是的,无法创建通用数组.我知道的最佳解决方法是使用集合:
private List<T> list;
.......
list = new ArrayList<T>();
Run Code Online (Sandbox Code Playgroud)
通用数组可以通过反射创建(尽管需要不安全的强制转换),您只需将类作为参数传递(假设以下方法位于定义类型参数的类内部<T>):
@SuppressWarnings("unchecked")
public T[] createArray(Class<T> klass, int size) {
return (T[]) Array.newInstance(klass, size);
}
Run Code Online (Sandbox Code Playgroud)
例如,在你的情况下:
HashTable<Integer> t = new HashTable<Integer>();
Integer[] intArray = t.createArray(Integer.class, 4);
intArray[0] = 1; intArray[1] = 2;
intArray[2] = 3; intArray[3] = 4;
System.out.println(Arrays.toString(intArray));
> [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |