【问题标题】:Java Instantiating the implementation of QueueadtJava实例化Queueadt的实现
【发布时间】:2018-04-26 16:15:29
【问题描述】:

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

所以我创建了一个类调用 Airline 来实现 Queue 接口,我需要一个到达队列的实例化,例如,基于 Airline 类型

有什么区别

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

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

【问题讨论】:

  • 没区别,前者是语法糖
  • 唯一的区别是第一个代码示例只能用 java 7 和更高版本编译。

标签: java arrays queue


【解决方案1】:
private Queue<Airline> queue = new Queue<Airline>();

以上是自 Java 5 发布以来必须如何指定泛型类型。您有一个泛型类型为 AirlineQueue,因此您实例化它(在右侧)并声明它(在左侧)。

然而,Java 7 引入了diamond operator,它允许从声明的泛型类型推断出正在实例化的泛型类型:

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

所以在这个例子中,编译器从声明中推断出实例化的类型应该是Queue&lt;Airline&gt;,并照此处理。

正如上面 cmets 所说,区别纯粹是语法糖,所以纯粹是编译。两种情况下编译的字节码和运行时行为都是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    相关资源
    最近更新 更多