如何在Java中创建泛型数组?问题解决方案
大家好!我最近开始学习Java,在使用泛型时遇到了一个问题。我需要创建一个泛型类型的数组,但编译器报错。
这是我的代码:
```java
public class MyContainer {
private T[] array;
public MyContainer(int size) {
array = new T[size]; // 编译错误:"Type parameter 'T' cannot be instantiated directly"
}
}
```
我理解Java不允许直接创建泛型类型的数组,因为类型擦除(type erasure)。但如何正确实现这样的结构呢?我需要将元素存储在数组中,并能够通过索引访问它们。我尝试过使用 `new Object[size]` 并强制类型转换,但这会产生 "unchecked cast" 警告。
请告诉我如何在Java中正确创建泛型数组,使代码类型安全且不产生警告?也许有一些替代方法?我听说过 `Array.newInstance()`,但不太理解。