在进行实例化列表时,<?>是什么类型的?

DIT*_*TTO 7 java list arraylist

我在多个不同的地方看到过实例化列表或ArrayList的人:

List<?> l = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

什么类型?? 这是否意味着它可以容纳任何类型?如果是这样,为什么要使用它而不仅仅是和ArrayList?

Mar*_*nik 9

这是否意味着它可以容纳任何类型?

不.这意味着您的l变量可以引用以任何类型参数化的列表.所以它实际上是一个限制:你不会被允许添加任何对象,l因为你不知道它接受哪些项目.举一个具体的例子,l可能是一个List<String>或它可能是一个List<ExecutorService>.

  • 它在方法签名中非常有用.比如说,`boolean hasPrimeNumberOfItems(List <?> list)`---如果你不能指定通配符,你就不能声明签名是你想要的一般. (3认同)