访客模式中List.of()的用法

时间:2019-03-26 16:25:03

标签: java list visitor visitor-pattern

我正在浏览Wikipedia的“访问者模式”示例,其中有一小段代码作为示例。 您可以找到它here

如果滚动浏览Java示例部分,则Car()的构造函数将使用称为List.of()的东西。

根据oracle documentation,List.of()创建一个不可变的列表。同一段代码似乎无法在我的个人IntelliJ工作空间中工作,并且无法识别List.of()。 虽然,如果我可以将其替换为可变列表,例如-

this.elements = new ArrayList<CarElement>();
this.elements.add(new Wheel("front left"));
this.elements.add(new Wheel("front right"));
this.elements.add(new Wheel("back left"));
this.elements.add(new Wheel("back right"));
this.elements.add(new Body());
this.elements.add(new Engine());

我可以得到相同的输出。我在做错什么吗? 与我的JDK版本有关吗?我的JDK版本是1.8.0_45。

1 个答案:

答案 0 :(得分:2)

这是因为List::of是JDK 9中引入的。由于您在JDK 8上进行编译,因此将无法使用。

  

类型参数:
  E-列表的元素类型
  参数:
  elements-要包含在列表中的元素
  返回:
  包含指定元素的列表
  抛出
  NullPointerException-如果元素为null或数组为null
  因为:
  9

请注意,在文档底部有Since: <version>。这将告诉您该方法添加到哪个版本