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

B

beta20

Top Contributor
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

Top Contributor
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.
 
B

beta20

Top Contributor
habe hier nochmal eine Frage:
ich würde gerne der Liste ein Objekt hinzufügen (add):


private List<? extends DocumentPositionInterface> positionList = new ArrayList<DocumentPositionInterface>();

Also das hier:
DocumentPositionInterface offerPosition = wird gefüllt....;
positionList.add(offerPosition);

Ich bekomme dann aber diese Meldung:
The method add(capture#2-of ? extends DocumentPositionInterface) in the type List<capture#2-of ? extends DocumentPositionInterface> is not applicable for the arguments (DocumentPositionInterface)


Edit:
wäre das dann richtig:

List<? super DocumentPositionInterface> positionList = new ArrayList<DocumentPositionInterface>();
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
wäre das dann richtig:

List<? super DocumentPositionInterface> positionList = new ArrayList<DocumentPositionInterface>();
Was richtig ist, hängt immer davon ab, was genau du machen willst.

In so einem Fall wäre ein List<DocumentPositionInterface> positionList = new ArrayList<DocumentPositionInterface>(); am passendsten, Wildcards bei der Deklaration einer normalen Variable zu nutzen ist eher unüblich.



Wildcards nutzt man eher bei Methodenparametern, und da folgt man PECS: https://stackoverflow.com/a/2723538
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
G Linked List mit Interface erstellen Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
A Interface Kuddelmuddel Java Basics - Anfänger-Themen 4
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
H abstract und interface Java Basics - Anfänger-Themen 4
F Interface Casting Java Basics - Anfänger-Themen 13
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Interface Java Basics - Anfänger-Themen 2
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
T Interface Methode im Interface mit mehreren Parametern Java Basics - Anfänger-Themen 10
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
E Interface nur von abstrakter Klasse implementierbar?! Java Basics - Anfänger-Themen 1
J Vererbung Abstrake Klasse <-> Interface Java Basics - Anfänger-Themen 5
C Interface als Datentyp eines Attributes? Java Basics - Anfänger-Themen 6
U Interface Bedeutung "Code to an interface rather than to an implementation." Java Basics - Anfänger-Themen 4
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
T Vererbung Interface Java Basics - Anfänger-Themen 5
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
B Erste Schritte Wie definiere ich in Java ein Interface? Java Basics - Anfänger-Themen 6
L OOP Interface Prinzip? Java Basics - Anfänger-Themen 6
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
A Frage zu Interface Java Basics - Anfänger-Themen 16
J Interface Java Basics - Anfänger-Themen 3
W Interface Java Basics - Anfänger-Themen 1
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Interface-Methode abrufen? Java Basics - Anfänger-Themen 2
P Vererbung Klasse erbt von abstrakter Klasse implementiert Interface Java Basics - Anfänger-Themen 2
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
P interface Java Basics - Anfänger-Themen 1
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
M Interface als Datentyp Java Basics - Anfänger-Themen 12
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
G Interface klasse Java Basics - Anfänger-Themen 4
N Interface Interface (sinnvoll) erzeugen Java Basics - Anfänger-Themen 8
D Interface namen bekommen Java Basics - Anfänger-Themen 3
O Frage zu Interface Java Basics - Anfänger-Themen 5
J Interface compatible to a class Java Basics - Anfänger-Themen 7
B non static interface Methode Java Basics - Anfänger-Themen 16
G Was ist ein Interface? Java Basics - Anfänger-Themen 11
X Generisches Interface Java Basics - Anfänger-Themen 3
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
D Interface für Verhalten von "=="? Java Basics - Anfänger-Themen 21
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
N Interface Klassen gegenseitig kommunizieren Java Basics - Anfänger-Themen 8
K Interface als Instanzvariable = gutes Design Java Basics - Anfänger-Themen 6
K In Eclipse Interface Implementierungen auslesen Java Basics - Anfänger-Themen 3
K Schnittstelle - Interface unklar Java Basics - Anfänger-Themen 4
M Interface als Konstruktorparameter nutzen, um Funktion zu plotten Java Basics - Anfänger-Themen 14
C Comparable Interface Java Basics - Anfänger-Themen 8
T Interface Interface Comparable Problem... Java Basics - Anfänger-Themen 2
T Interface implementieren mit Abstrakten Typen? Java Basics - Anfänger-Themen 4
T Interface Implementieren Java Basics - Anfänger-Themen 5
S Interface Java Basics - Anfänger-Themen 24
P Compiler-Fehler "class, interface, or enum expected" Java Basics - Anfänger-Themen 5
K class, interface or enum expected Java Basics - Anfänger-Themen 14
B Interface NodeList wird als Klasse verwendet? Java Basics - Anfänger-Themen 8
M Interface und Abstrakte Klassen Java Basics - Anfänger-Themen 12
K Wann Vererbung und wann Interface verwenden? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
pg1337 Interface Comparable-Interface bei HashMap Java Basics - Anfänger-Themen 21
K Technische Realisierung eines Interface Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben