gpt4 book ai didi

java泛型和继承问题

转载 作者:行者123 更新时间:2023-12-01 06:27:44 24 4
gpt4 key购买 nike

我有一个如下定义的列表:

 List<MyBean> beanList = getList();

getList()返回类型 List<MyBean> .

现在,我想将结果传递给接收 List<Idisplayable> 的方法和MyBean是否实现了Idisplayable

这会导致编译器错误。

现在迭代 beanList 是愚蠢的只是将其转换到 Idisplayable 。有什么建议吗?

最佳答案

如果采用 List<IDisplayable> 的方法不想向列表中添加任何内容,那么它应该接受 List<? extends IDisplayable>,以完全允许您尝试执行的操作。

基本问题是 List<MyBean> List<IDisplayable> 不同(甚至赋值兼容)。

List<IDisplayable> promise 两件事:它只会返回 IDisplayable 对象,并且它将接受(通过 add() )所有 IDisplayable 对象。

A List<MyBean> 也只返回 IDisplayable ,但它不会接受任何不是 IDisplayableMyBean (例如, AnotherDisplayable )。

因此,如果一个方法仅迭代列表的内容(实际上是只读的)或仅执行一组有限的操作(删除对象很好,就像添加 null 一样),那么它应该接受 List<? extends IDisplayable> 。该语法意味着“我接受任何只会返回 List 对象的 IDisplayable,但我不关心具体类型”。

关于java泛型和继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com