Я пытаюсь написать какой-то общий c код и сталкиваюсь с проблемой. Вот код
public abstract class AbstractService<D extends IDTO> {
public String ex(D dto) {
return null;
}
}
public class AService extends AbstractService<TestA> {
@Override
public String ex(TestA dto) {
return "a";
}
}
public class BService extends AbstractService<TestB> {
@Override
public String ex(TestB dto) {
return "b";
}
}
class TestA impements IDTO {
}
class TestB impements IDTO {
}
Итак, как вы можете видеть, это действительно простой код, один AbstractService с ограниченным параметром, который расширяет IDTO. Две реализации службы AService и BService, которые используют их соответствующие DTO.
Не существует другого класса, которому нужно вызывать метод ex()
на основе экземпляра времени выполнения. здесь я сталкиваюсь с проблемой.
public class TestAll {
public void executeRequest(final IDTO dto){
// serviceMap contains list of all Services here A and B
serviceMap.get(type).ex(dto);
}
}
Проблема в построении линии ().
Метод build (capture # 5-of? Extends IDTO) в типе AbstractService не применим для аргументов (IDTO)
Может ли кто-нибудь помочь решить эту проблему?