如果有人可以为我解决这个难题。我确定我错过了一些东西!
interface a { }
class b implements a { }
class c extends ArrayList<b> { }
class d {
d(ArrayList<a> param) {}
}
class e {
public static void main(String[] arg) {
d newd = new d(new c());
}
}
此代码有错误:错误 d(ArrayList<a>) is not applicable (actual argument c cannot be converted to ArrayList<a> by method invocation conversion)
当然,类c
可以转换ArrayList<a>
为c
扩展ArrayList<b>
和b
实现a
!我尝试过显式转换,但没有帮助。
class c extends ArrayList<b>
改成toextends ArrayList<a>
作为c
集合的目的也没有意义b
,界面a
仅用于显示目的。classd
也是一个通用显示类,它依赖于接口中表达的功能a
,因此更改它也没有任何意义。
建议会很方便!