我有一个接受以下参数的视图模板:
@(groups: List[models.groups.AcademicGroup]
我有我的学术小组课程:
@MappedSuperclass
public abstract class AcademicGroup extends Model
和这样的子类:
@Entity
public class SchoolClass extends AcademicGroup
从另一个模板中调用我的视图模板已经有效:
@views.html.panels.groups(schoolClasses.asInstanceOf[java.util.List[models.groups.AcademicGroup]])
什么是无效的,是通过控制器直接传递子类:
public static Result schoolClasses() {
List<SchoolClass> schoolClasses = SchoolClass.find.all();
return ok(groups.render(schoolClasses));
}
使用这种方法,我收到错误消息:
The method render(List<AcademicGroup>) in the type groups is not applicable for the arguments (List<SchoolClass>)
类型化列表不起作用.有什么我缺少或有一种方法可以隐含地接受子类作为模板参数,就像你可以为Java泛型做的那样:
List<? extends AcademicGroup>
最佳答案 感谢serejja!
传递清单[_<:AcademicGroup]有效! 这等于List<?扩展AcademicGroup>
如Carsten所提到的只添加一个符号会导致编译错误