Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java阵列列表问题(捕获?)_Java_Arraylist - Fatal编程技术网

Java阵列列表问题(捕获?)

Java阵列列表问题(捕获?),java,arraylist,Java,Arraylist,在java中,我有一个arraylist,其中包含以下内容 List<IMyInterface> 其中MyElement扩展了接口 我得到的是一个编译错误,该方法需要其他内容。 这是: 列表中的添加(捕获)无法应用于(MyElement) 。虽然MyElement扩展了接口 顺便问一下:用粗体字表示的“捕获”是什么? 谢谢。添加是一种消费者方法,它使用要添加到列表中的内容,因此您希望添加内容的任何列表都限制在下方(?super Foo),而不是上方(Foo extensed?)

在java中,我有一个arraylist,其中包含以下内容

 List<IMyInterface>
其中MyElement扩展了接口

我得到的是一个编译错误,该方法需要其他内容。
这是:

列表中的添加(捕获)无法应用于(MyElement)

。虽然MyElement扩展了接口

顺便问一下:用粗体字表示的“捕获”是什么? 谢谢。

添加是一种消费者方法,它使用要添加到列表中的内容,因此您希望添加内容的任何列表都限制在下方(
?super Foo
),而不是上方(
Foo extensed?

有关更多详细信息,请参阅

更具体地说,假设底层是
List
,其中
MyBetterInterface
扩展了
IMyInterface
。现在,您仍然可以使用相同的签名实现
getList()
方法,但是调用方添加只实现
IMyInteface
的对象显然是无效的,因为现在您将有一些对象不是
MyBetterInterface

所以宣布它为

List<? super IMyInterface> getModifiableList();

List是getList missing List的返回类型吗?是。很抱歉我不擅长抄写。固定的。谢谢你的通知。问题仍然存在,约翰。这个链接真的很棒。约翰·斯基特在他的评论中正好回答了我的问题。只是我不明白:0)。为什么那样工作是不安全的?我还不相信这能如预期的那样起作用。
getList().add(MyElement)
将起作用,但是如何声明数组列表<代码>列表将其声明为
ArrayList
getList().add(MyElement)
List<? super IMyInterface> getModifiableList();