bob wrote:
> Jeg prøver at lave en to lags application. I det første lag
> "Applications laget" er alle typer simple interfaces som fx:
>
> interface IShop {
> List<IEmployee> getEmployees();
> }
>
> Det er først i laget nedenunder at disse interfaces implementeres og
> evt. extendes:
>
> interface IBigShop extends IShop {
> int getRooms()
>
> }
>
> class BigShop implements IBigShop {
>
> // Inherited
> List<IEmployee> getEmployees() {
>
> }
>
> int getRooms(){
> //...
> }
>
>
>
>
> Nu vil jeg gerne have at "getEmployee()" skal returnere en klasse der
> implementere et nedarvet interface af IEmployee. getEmployees() i
> BigShop bliver derfor:
>
> List<IBigEmployee> getEmployees() {
>
> }
>
> Men der er no go! Jeg kan ikke ændre returværdien fra base interfacet.
Det er korrekt.
http://www.ibm.com/developerworks/java/library/j-jtp01255.html
har en forklaring.
> Umiddelbart tænker jeg at jeg blot vil lave:
>
> interface IShop {
> List<IEmployee> getEmployees();
> }
>
> om til:
>
> interface IShop {
> List getEmployees();
> }
>
> Men er det måden at løse dette på?
Det er en måde.
En anden måde er:
interface IShop {
List<? extends IEmployee> getEmployees();
}
Arne