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