代码之家  ›  专栏  ›  技术社区  ›  lio

Java实例化Queueadt的实现

  •  1
  • lio  · 技术社区  · 6 年前

    这是关于实例化ADT实现的语法的一般问题。

    因此,我创建了一个实现Queue接口的类call Airline,并且我需要一个到达队列的实例化,例如,基于Airline类型

    两者的区别是什么

    private Queue<Airline> queue = new Queue<>();
    

    private Queue<Airline> queue = new Queue<Airline>();
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Michael Berry    6 年前
    private Queue<Airline> queue = new Queue<Airline>();
    

    以上是自Java 5中发布泛型类型以来,必须如何指定泛型类型。你有一个 Queue 泛型类型的 Airline ,所以你 实例化 其本身(在右侧)和 声明 就其本身而言(在左侧)

    然而,Java 7引入了 diamond operator ,它允许 实例化 根据泛型类型推断 已声明 :

    private Queue<Airline> queue = new Queue<>();
    

    因此,在本例中,编译器推断实例化的类型应该是 Queue<Airline> 从声明中删除,并照此处理。

    正如上面的评论所说,区别纯粹是句法上的糖分,因此纯粹是编译。两种情况下编译的字节码和运行时行为都是相同的。