2017-12-20 4 views
-2

Ich habe eine Schnittstelle VersionInterface die von meinem Objekt implementiert wird ObjectDefinitionWie rufe ich eine Methode mit Schnittstellenparametern auf?

Ich habe auch eine Methode, die zwei List<VersionInterface> als Argument akzeptiert.

Da ObjectDefinition implementiert VersionInterface, warum kann ich nicht meine zwei List<VersionInterface> als Argumente zu meiner Methode übergeben?

Methode Definition:

public List<VersionInterface> updateArtifact(List<VersionInterface> currentCopy, List<VersionInterface> updatedCopy) 

ObjectDefinition Definition:

public class ObjectDefinition implements VersionInterface { 

Wie ich rufe updateArtifact:

service.updateArtifact(currentCopy, updatedCopy); 

currentCopy und updatedCopy sind beide ArrayList<ObjectDefinition>

ich:

The method updateArtifact(List<VersionInterface>, List<VersionInterface>) in the type ORService is not applicable for the arguments (List<ObjectDefinition>, List<ObjectDefinition>)

Edit: Mein Problem hat mit Schnittstellen und nicht die Unterklassen zu tun

+0

Ich glaube [this] (https://stackoverflow.com/questions/10643443/passing-arraylistsubclass-to-method-declared-with-listsuperclass) bestehenden Beitrag beantwortet die Frage. –

+0

mein Beispiel verwendet Schnittstellen und befasst sich nicht mit erweitern –

Antwort

-1

Sie können‘ t tue das, weil der Methodenprototyp speci Fies, dass es eine Liste von VersionInterface-Objekten zurückgibt, nicht eine Liste von ObjectDefinition-Objekten.

VersionInterface ist eine Schnittstelle, wie Sie gezeigt haben. Vielleicht ist ObjectDefinition die einzige Klasse, die diese Schnittstelle implementiert, aber im Allgemeinen ist das in Java nicht der Fall. Es könnte mehrere Implementierungen von VersionInterface geben, und die Liste, die zurückgegeben wird, kann Objekte verschiedener Typen enthalten.

Verwandte Themen