我正在使用通用类型 E 创建一个双端队列...... 在初始化某种通用数组时遇到问题,虽然类型安全,但已尝试转换,但这是
Type safety: Unchecked cast from Object[] to E[]
public class DequeCyclic<E> implements Deque<E> {
private E[] line;
public DequeCyclic(int size) {
E[] line = (E[])new Object[size];
}
}
我可以输入
@SuppressWarnings("unchecked")
来忽略类型安全问题吗?
创建通用双端队列/数组的另一种方法是什么?
要以类型安全的方式初始化泛型数组,您可以尝试使用 Array.newInstance() 方法。
public class DequeCyclic<E> implements Deque<E> {
private E[] line;
public DequeCyclic(int size) {
line = (E[]) Array.newInstance(Object.class, size);
}
}
这将创建一个新的大小为 size 的通用数组,其中 Object 作为组件类型。由于直到运行时才知道数组的实际组件类型,因此您可以将生成的数组转换为 E[] 并抑制警告。这种方法应该是类型安全的,并且不应产生任何意外行为。