Я определяю набор классов, которые работают со страницами элементов и объектами-оболочками, содержащими эти страницы. Эти «конверты» по сути являются типовыми телами реагирования служб. Объявление универсальных классов для этих концепций было простой задачей, но после определения конкретных типов для ответов с разбивкой на страницы я получил объявления, которые кажутся избыточными.
Упрощенный пример кода:
Код: Выделить всё
class PagedResponse {
public T data;
public List getItems() {
return this.data.getItems();
}
}
abstract class Page {
public abstract List getItems();
}
class ConcreteItem {
/* data & code */
}
class ConcreteItemPage extends Page {
public List getItems() {
/* ... */
}
}
void loadConcreteItemPage() {
PagedResponse response = /* call service, get response body */;
List itemsInPage = response.getItems();
/* iterate through items */
}
Под «избыточным» я подразумеваю объявление переменной ответа, которую необходимо параметризовать с помощью ConcreteItem, хотя параметр типа ItemPage имеет значение уже параметризован тем же типом ConcreteItem. Кажется, объявление должно быть просто таким...
Код: Выделить всё
PagedResponse response = /* call service, get response body */;
List itemsInPage = response.getItems();
...но я не знаю, как это сделать в системе типов Java и возможно ли это вообще. Спасибо!
Подробнее здесь:
https://stackoverflow.com/questions/787 ... containers