У меня есть интерфейс, определенный ниже и реализуемый одним классом MatchedAddressImpl.java generics - one impl class, multiple views
interface MatchedAddress extends HouseHelpData, StreetHelpData, TownHelpData
public class MatchedAddressDetails implements MatchedAddress
клиент должен быть обеспечен различные точки зрения (HouseHelpData или StreetHelpData или TownHelpData или MatchedAddress) одного и того же MatchedAddressImpl. Поэтому я предоставил нижеприведенный API для клиентов.
public List<MatchedAddress> matchedAddresses()
public List<? extends HouseHelpData> houseHelpData()
public List<? extends StreetHelpData> streetHelpData();
public List<TownHelpData> townHelpData();
проблема заключается в том, что клиент должен сделать некоторые вещи, как показано ниже, и я прочитал в Effective Java, что возвращаемые типы не должны содержать дикие карты, использование clinet выглядит некрасиво ... Я признателен, если кто-то может помочь я улучшаю API. то, что я хочу, чтобы удалить символы из указанных выше способов ... ТНХ заранее
List<? extends StreetHelpData> streetHelpDataList = details.streetHelpData();
Вы думали о пользе не умножать реализующие типов. В общем, один класс делает одно, что вряд ли произойдет, если оно должно быть несколькими вещами. –