java generics - one impl class, multiple views
<p>i have the interface defined as below and is implemented by a single class MatchedAddressImpl.</p>

<pre><code>interface MatchedAddress extends HouseHelpData, StreetHelpData, TownHelpData

public class MatchedAddressDetails implements MatchedAddress
</code></pre>

<p>the client should be provided different views (HouseHelpData or StreetHelpData or TownHelpData or MatchedAddress) of the same MatchedAddressImpl. So I have provided the below API for the clients.</p>

<pre><code>public List&lt;MatchedAddress&gt; matchedAddresses()
public List&lt;? extends HouseHelpData&gt; houseHelpData()
public List&lt;? extends StreetHelpData&gt; streetHelpData();
public List&lt;TownHelpData&gt; townHelpData();
</code></pre>

<p>the problem is that the client need to do some thing like below and i read in effective java that the return types should not contain wild cards as the clinet usage looks ugly...i appreciate if someone can help me improve the API. what i want is to remove the wildcards from the above methods...thx in advance</p>

<pre><code>List&lt;? extends StreetHelpData&gt; streetHelpDataList = details.streetHelpData();
</code></pre>
