2017-12-20 10 views
-2

나는 또한 인수로 두 List<VersionInterface>을 받아들이는 방법을 내 객체 ObjectDefinition인터페이스 매개 변수가있는 메서드는 어떻게 호출합니까?

에 의해 구현되는 인터페이스 VersionInterface 있습니다.

ObjectDefinitionVersionInterface을 구현하므로 내 방법에 두 개의 List<VersionInterface>을 인수로 전달할 수 없습니다.

방법 정의 :

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

ObjectDefinition 정의 :

public class ObjectDefinition implements VersionInterface { 

것은 내가 updateArtifact 전화 했어 방법 :

service.updateArtifact(currentCopy, updatedCopy); 

currentCopyupdatedCopy 모두 ArrayList<ObjectDefinition>

있습니다 내가 얻을 :

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

편집 : 내 문제는 인터페이스가 아닌 서브 클래스

+0

기존 게시물이 질문에 답변한다고 생각합니다. (https://stackoverflow.com/questions/10643443/passing-arraylistsubclass-to-method-declared-with-listsuperclass) –

+0

필자의 예제는 인터페이스를 사용하고 확장을 다루지 않는다. –

답변

-1

당신이 할 수있는과 관련이있다 ' 그 방법 프로토 타입 speci 때문에 ObjectDefinition 객체의 List가 아니라 VersionInterface 객체의 List를 반환합니다.

VersionInterface는 이미 설명한 것처럼 인터페이스입니다. 어쩌면 ObjectDefinition이 해당 인터페이스를 구현하는 유일한 클래스 일 수 있지만 일반적으로 Java에서는 그렇지 않습니다. VersionInterface의 여러 구현이있을 수 있으며 반환되는 List에는 다양한 유형의 객체가 포함될 수 있습니다.