Во-первых, у меня есть простой шаблон, ничего особенного:
public abstract class ListOfK<K> {
private List<K> insides = new ArrayList<>();
}
Далее я создаю интерфейс службы, используя шаблон
public abstract interface SomeService<K extends ListOfK<K>> {
int calculateSomething (K input);
int calculateAnother (ListOfK<K> list);
}
Пока все хорошо сабстракция.
Теперь давайте перейдем к реализации
public class ListOfString extends ListOfK<String> {
}
и реализации SomeService:
public class SomeServiceImpl extends SomeService<String> {
@Override
public int calculateSomething(String input) {
return 0; // TODO impl
}
@Override
public int calculateAnother(ListOfK listOfK) {
return 0; // TODO impl
}
}
Каким-то образом, когда SomeServiceImpl
расширяется SomeService<String>
, этоотмечается Type parameter java.lang.String is not within its bound; should extend ListOfK<String>
Что я должен вводить как реализацию SomeService
, чтобы она не выдавала ошибку?Или я ошибаюсь с SomeService?Я просто хочу, чтобы класс ввода был другим классом, использующим Generic.
Заранее спасибо.