繁体   English   中英

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

[英]Meaning of the different parameter types in java java.util.List interface

之间有什么区别

public List<?> myList;

public List<String> myList;

我知道后者会存储一个myList对象的List (字符串),但不确定第一个对象是做什么的。我猜它会带任何type对象。但是这样安全吗?

正如您已经说过的,第二个将包含字符串列表。 首先包含未知对象的列表,在使用它们之前,您需要明确地将它们转换为适当的对象。 将通配符与List<? extends ABC>等继承一起使用时,还会有通配符的其他好处List<? extends ABC> List<? extends ABC>等。您需要遍历Java文档的通配符部分。

这是了解它们的简单教程http://tutorials.jenkov.com/java-generics/wildcards.html

是的,它不安全,这就是为什么在将其用作参数时无法添加到它的原因。 您只能从中阅读。

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

由于您不知道列表键入的类型,因此只能从集合中读取,并且只能将读取的对象视为对象实例。

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

在这种方法中,您无法在“元素”中添加内容。 只读东西,因为您不知道元素是什么类型。

List<String>是代表列表的Parameterized Type该列表只能包含String类型的对象,而

List<?>是一个Unbounded Wildcard Type表示只能包含某些未知类型的对象的列表。

根据有效Java的规定 ,除了可以在运行时导致异常的Raw Type List外,这两种方法都可以安全使用,并且仅出于与引入泛型之前编写的旧代码的兼容性和互操作性而提供。

不兼容的类型。 必需的 java.util.List<object> 找到 java.util.List<integer><div id="text_translate"><p> 我需要在 Android Studio 中为 Android 项目使用列表列表,但任何时候尝试声明一个我都会突出显示此错误。 我尝试制作演员表,我尝试使用 generics 和几乎所有东西,但每次我都会突出显示此错误。 以下是发送此错误的一种代码示例:</p><pre> List&lt;List&lt;Object&gt;&gt; p = Arrays.asList( Arrays.asList(1,2,3) );</pre><p> 最奇怪的是,在 IntelliJ 中,这段代码运行得非常好。 所以,我想知道如何解决这个问题。</p></div></integer></object>

[英]Incompatible types. Required java.util.List<Object> found java.util.List<Integer>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM