我有一个抽象类Monitor.java,它由类EmailMonitor.java子类化。
方法:
public abstract List<? extends MonitorAccount> performMonitor(List<? extends MonitorAccount> accounts)
在Monitor.java中定义并且必须在EmailMonitor.java中被覆盖。
我目前在EmailMonitor.java中重写了该方法,如下所示:
@Override
public List<EmailAccount> performMonitor(List<EmailAccount> emailAccounts) {
//...unrelated logic
return emailAccounts;
}
但是,这会产生编译时错误:
Name clash: The method performMonitor(List<EmailAccount>) of type EmailMonitor has the same erasure as performMonitor(Lis<? extends MonitorAccount> emailAccounts) of type Monitor but does not override it
EmailAccount
是 的子类MonitorAccount
,因此(至少在我看来)以这种方式覆盖它是非常有意义的。看到编译器对我的逻辑不满意,我应该如何正确处理这个问题,同时仍然保持我的编译时间检查以确保所有调用都EmailMonitor.performMonitor()
接收列表EmailAccount
而不是其他类型的MonitorAccount
?