Как создать подклассы с конкретными параметрами
У меня есть класс Transaction и интерфейс службы
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, я не переопределяю метод супертипа.
Как я могу это реализовать?
1 ответ
Решение
Как отмечает 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();
}
}