如何调用具有Interface参数的方法?

时间:2017-12-20 20:51:38

标签: java interface

我有一个接口VersionInterface,它由我的对象ObjectDefinition

实现

我还有一个接受两个List<VersionInterface>作为参数的方法。

由于ObjectDefinition实现了VersionInterface,为什么我不能将我的两个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>)

修改 我的问题与接口而不是子类有关

1 个答案:

答案 0 :(得分:-1)

您不能这样做,因为方法原型指定它返回VersionInterface对象的List,而不是ObjectDefinition对象的List。

VersionInterface是一个界面,正如您所展示的那样。也许ObjectDefinition是唯一实现该接口的类,但通常在Java中不是这种情况。 VersionInterface可能有多个实现,返回的List可能包含各种不同类型的对象。