我有一个类Transaction和一个Service接口
public class Transaction {}
public interface RequestService {
public String getRequest(Transaction 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抱怨说,即使ESPTransaction为Transaction子类化,我也没有覆盖超类型方法。
我该如何实现?
答案 0 :(得分:2)
正如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();
}
}