java - java java.util.List接口(interface)中不同参数类型的含义

标签 java parameterized-types unbounded-wildcard

有什么区别

public List<?> myList;

public List<String> myList;

我知道后者会存储 List myList 对象(字符串),但不确定第一个对象的作用。我的猜测是它将采用任何 type 的对象.但这安全吗?t

最佳答案

是的,它不安全,这就是为什么在使用它作为参数时不能添加它。您只能从中读取。

List<?>表示键入未知类型的列表。这可能是 List<A>, a List<B>, a List<String>等等

由于不知道List的类型是什么,所以只能从集合中读取,并且只能将读取到的对象视为Object实例。

public void processElements(List<?> elements){
   for(Object o : elements){
      System.out.println(o);
   }
}

在此方法中,您无法在“元素”中添加内容。只读取内容,因为你无法知道元素是什么类型。

关于java - java java.util.List接口(interface)中不同参数类型的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371087/

相关文章:

java - 为什么不能将通配符 (?) 用作参数类型、字段、局部变量或方法的返回类型?

java - 如何从scala调用通配符java函数

haskell - Haskell中由常量参数化的数据类型

java - 加法和级数

java - 在不破坏不变性的情况下更新不可变对象(immutable对象)

java - Mapstore 未从数据库 Hazelcast 加载数据

java - 理解java中的有界泛型。重点是什么?

java - Generics Java,无限通配符

java - 是否可以在 Android < API 24 中使用默认接口(interface)实现?