2013-08-07 40 views
4

我有接受下列參數視圖模板:播放框架模板參數 - 傳遞一個子類

@(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]]) 

什麼不工作,直接通過控制器傳遞sublass:

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> 
+0

如果我沒有記錯,在斯卡拉同樣的事情(因此,在模板)將是'List [+ models.groups.AcademicGroup]'(注意加號)。 – Carsten

+2

嘗試傳遞一個'List [_ <:AcademicGroup]',它等於'List <?在Java中擴展AcademicGroup>'' – serejja

回答

2

感謝serejja!

傳遞List[_ <: AcademicGroup]作品!

這等於List<? extends AcademicGroup>

添加只是一個+跡象,因爲卡斯滕提到導致一個編譯器錯誤