Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht?

Diskutiere Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? im Java Basics - Anfänger-Themen Bereich.
B

beta20

Hallo,

ich habe ein Verständnisfrage und stehe hier gerade auf dem Schlauch...

Ich habe folgende Dinge:

Interface:
Java:
public interface DocumentPositionInterface
und eine Klasse, die das Interface implemntiert:
Java:
class OfferPosition implements  DocumentPositionInterface

Ich habe diese Liste:
List<OfferPosition> positionList = new ArrayList<OfferPosition>();

Diese möchte ich nun an eine Funktion übergeben:
Java:
List<DocumentPositionInterface> deletePosition(List<DocumentPositionInterface> positionList, DocumentPositionInterface positionToDelete)

Ich bekomme aber einen Compiler Fehler:
The method deletePosition(List<DocumentPositionInterface>, DocumentPositionInterface) in the type DocumentPositionCreatorProcessService is not applicable for the arguments (List<OfferPosition>, OfferPosition
Übergebe ich nur: deletePosition(DocumentPositionInterface positionToDelete) funktioniert es, wobei ich dann einen Fehler bekomme, weil der Rückgabewert (List<DocumentPositionInterface>) nicht passt..

Wo liegt mein Denkfehler?
 
H

httpdigest

Das Problem ist, dass eine List<OfferPosition> (dein aktuelles Argument) nicht zuweisungskompatibel zu einem List<DocumentPositionInterface> (der Parametertyp) ist. Generics sind nicht kovariant in ihren Typparameter.
Das kannst du beheben, indem du z.B. den Parametertyp nicht als List<DocumentPositionInterface> sondern als List<? extends DocumentPositionInterface> deklarierst.
 
Thema: 

Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben