Java 实现类列表中的接口列表

Java 实现类列表中的接口列表,java,interface,Java,Interface,我有以下代码: List<MassEditionObject> objects = getProjects(); List objects=getProjects(); 其中,MassEditionObject是由项目类实现的接口 getProjects()返回List,这似乎应该可以,因为Project是MassEditionObject 但是,Eclipse给了我以下错误: 类型不匹配:无法从列表转换为列表 我理解接口的一般概念以及如何使用它们,我只是不确定为什么这是无效的

我有以下代码:

List<MassEditionObject> objects = getProjects();
List objects=getProjects();
其中,
MassEditionObject
是由
项目
类实现的接口

getProjects()
返回
List
,这似乎应该可以,因为Project是MassEditionObject

但是,Eclipse给了我以下错误:
类型不匹配:无法从列表转换为列表

我理解接口的一般概念以及如何使用它们,我只是不确定为什么这是无效的


谢谢,如果这个问题已经发布,我很抱歉。我搜索并发现了类似的情况,但没有一个能回答这个问题。

实际上,你应该做相反的事情

List object=getProjects()
其中
getProjects()
返回一个
List

A
Project
是一个
MassEditionObject
MassEditionObject
不一定是
项目

由于我上面的代码在您的情况下没有意义,您可以这样做

List object=getProjects()


或者参见@Kayaman的答案。

如果你想要正确的泛型版本,它会是

List<? extends MassEditionObject> objects = getProjects();

将返回类型更改为getObjects以

public List<? extends Project> getObjects();

public List是否尝试将getProjects()的返回值类型转换为List;类似这样的列表变量=(List)(List)collectionOfListA;啊,非常好!我不知道可以在接口中使用通配符。是的,开始时语法有点混乱。但是请注意,使用通配符作为返回类型是错误的,因为它“强制调用方处理通配符”。所以通配符是我们不想随意使用的。
public List<? extends Project> getObjects();
List<Project> objs = getObjects();

List<MassEditionObject> mObjs = (List<MassEditionObject>)getObjects();