我有以下代码:
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>
我理解接口的一般概念以及如何使用它们,我只是不确定为什么这是无效的.
谢谢,对不起,如果这个问题已经发布.我搜索并发现了类似的情况,但没有人回答这个问题.
如果你想要正确的泛型版本,那就是
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)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1164 次  |  
        
|   最近记录:  |