/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Returværdier i interfaces?
Fra : bob


Dato : 30-03-09 01:22

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.


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å?



 
 
Arne Vajhøj (30-03-2009)
Kommentar
Fra : Arne Vajhøj


Dato : 30-03-09 02:00

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


Søg
Reklame
Statistik
Spørgsmål : 177413
Tips : 31962
Nyheder : 719565
Indlæg : 6407803
Brugere : 218875

Månedens bedste
Årets bedste
Sidste års bedste