我正在浏览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。
答案 0 :(得分:2)
这是因为List::of
是JDK 9中引入的。由于您在JDK 8上进行编译,因此将无法使用。
类型参数:
E
-列表的元素类型
参数:
elements-要包含在列表中的元素
返回:
包含指定元素的列表
抛出:
NullPointerException
-如果元素为null或数组为null
因为:
9
请注意,在文档底部有Since: <version>
。这将告诉您该方法添加到哪个版本