当使用ArrayList(Collection<?扩展E>c)作为复制构造函数时,我收到两个错误

When using ArrayList(Collection<? extends E> c) for a copy constructor I get two errors

提问人:Tanner01 提问时间:1/26/2020 最后编辑:BohemianTanner01 更新时间:1/26/2020 访问量:139

问:

public ListArrayListBased(ListArrayListBased < E > var) 

{

items = new ArrayList < E> (ArrayList(ListArrayListBased 
        < ? extends E > var));

}

使用这行代码给了我两个错误。

  1. 此位置不允许使用通配符。
  2. 令牌“ListArrayListBased”上的语法错误,::在令牌之后。

我能够通过在 ListArrayListBased 之后放置 :: 来修复第二个问题,但我不知道它做了什么或它是如何工作的。我正在寻找更多的错误解释,然后是问题的解决方案。谢谢!

Java ArrayList 复制构造函数 包含

评论

1赞 VGR 1/26/2020
我不确定你在这里想做什么。如果您只想成为列表参数的副本,请使用 .(此外,它是 Java 10 中的语言关键字,因此您需要避免将其用作变量名称。itemsitems = new ArrayList<>(var);var
1赞 Andreas 1/26/2020
应该是什么?它不是方法调用。或方法声明。或者一个演员。或者我能想到的任何其他事情。ArrayList(ListArrayListBased< ? extends E > var)
0赞 Tanner01 1/26/2020
当我使用 items = ArrayList<>(var) 时,我收到一个错误,“构造函数 ArrayList(ListArrayListBased)<E> 未定义。
0赞 Andy Turner 1/26/2020
顺便说一句,不要命名变量.除了它是一个非常模糊的名字之外,它是 Java 11+ 中的一个(某种)关键字。var

答:

0赞 Andy Turner 1/26/2020 #1

这是一个复制构造函数,您正在尝试分配成员变量,该变量可能是类中的列表。items

因此,请从以下位置复制列表:itemsvar

items = new ArrayList<>(var.items);