如果有人可以为我解决这个难题。我确定我错过了一些东西!
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,因此更改它也没有任何意义。
建议会很方便!