实现类列表中的接口列表

jla*_*s62 3 java interface

我有以下代码:

List<MassEditionObject> objects = getProjects();
Run Code Online (Sandbox Code Playgroud)

哪个MassEditionObject是由Project类实现的接口.

getProjects()返回List<Project>,看起来应该没问题,因为Project是一个MassEditionObject.

但是,Eclipse给了我这个错误: Type mismatch: cannot convert from List<Project> to List<MassEditionObject>

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

谢谢,对不起,如果这个问题已经发布.我搜索并发现了类似的情况,但没有人回答这个问题.

Kay*_*man 5

如果你想要正确的泛型版本,那就是

List<? extends MassEditionObject> objects = getProjects();
Run Code Online (Sandbox Code Playgroud)

你应该阅读泛型,有时可能有点复杂.当然,如果您知道将返回一个List,那么您可以将其作为类型.但如果你有一个ProjectB同样实施的课程,MassEditionObject他们都会被接受.

List<? extends MassEditionObject> objects = getProjects();   // Return List<Project>
List<? extends MassEditionObject> objects2 = getProjectsB(); // Return List<ProjectB>
Run Code Online (Sandbox Code Playgroud)