クラスEmailMonitor.javaによってサブクラス化された抽象クラスMonitor.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