我有一个类交易和服务接口
public class Transaction {}
public interface RequestService {
public String getRequest(Transaction transaction);
}
现在,我想将交易类别分类,并拥有一个服务接口的具体类
public class ESPTransaction extends Transaction {}
public class ESPRequestService implements RequestService {
@Override
public String getRequest(ESPTransaction espTransaction) {
StringBuffer buff = new StringBuffer(espTransaction.someMethodThatDoesntExistInParentClass());
return buff.toString();
}
}
IDE抱怨说,即使Espransaction子类交易,我也没有覆盖Supertype方法。
我该如何实现?
正如IDE指出的那样,ESPRequestService
无法正确实现RequestService
,因为它没有getRequest(Transaction)
方法。
一个整洁的解决方案是使接口通用,因此每个RequestService
实现都可以指定其期望的Transaction
的类型:
public interface RequestService<T extends Transaction> {
public String getRequest(T transaction);
}
public class ESPRequestService implements RequestService<ESPTransaction> {
@Override
public String getRequest(ESPTransaction espTransaction) {
StringBuffer buff = new StringBuffer(espTransaction.someMethodThatDoesntExistInParentClass());
return buff.toString();
}
}