创建泛型类型数组 (Java)

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

我需要学校练习方面的帮助,我有以下课程:

class Queue<T> {}
class Passenger {}
class Bus {
  private Queue<Passenger>[] passengers;
  public Bus() {
    @SuppressWarnings("unchecked")
    Queue<Passenger>[] tmp = (Queue<Passenger>[]) new Object[3];
    this.passengers = tmp;
  }
}

基本上,Bus 类应该存储问题中指定的 Queuearray。但是,无论我如何尝试,当我尝试将 new Object[3] 转换为 Queue[] 时,我都会不断收到 ClassCastException。我知道 java 泛型不能很好地处理数组,但我不确定是否有其他方法可以解决这个问题。

我尝试创建一个新的通用类来将队列存储到另一个类中,但由于该类是通用的,因此无法使用任何与队列类相关的方法进行编译。我知道使用 Arraylist 可以解决我的问题,但问题希望我们使用带有 @SuppressWarning 的数组。

java arrays generics
1个回答
0
投票

Object

 不是 
Queue
,因此您不能将其投射到队列中。但是您可以将原始类型数组执行(不安全)转换为泛型类型数组:

Queue<Passenger>[] tmp = (Queue<Passenger>[]) new Queue[3];
    
© www.soinside.com 2019 - 2024. All rights reserved.