如何制作泛型双端队列?

问题描述 投票:0回答:1

我正在使用通用类型 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")
来忽略类型安全问题吗? 创建通用双端队列/数组的另一种方法是什么?

java arrays generics deque type-safety
1个回答
0
投票

要以类型安全的方式初始化泛型数组,您可以尝试使用 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[] 并抑制警告。这种方法应该是类型安全的,并且不应产生任何意外行为。

© www.soinside.com 2019 - 2024. All rights reserved.