2012-01-13 104 views
4

我想定義一個泛型類,它需要一個參數化類型T,然後在類的數組定義中使用該類型。我寫的,我覺得好像它應該工作Scala數組和參數化類型

class MyClass[T] { 

    val myarr:Array[T] = new Array[T](10) 

} 

但是,編譯器有以下

  • 找不到類清單的元素類型T
  • 值newArray不是抱怨以下Null的成員

任何人都知道這裏發生了什麼以及它不開心嗎?

回答

9

編譯器需要知道如何實例化T類型的東西。在通過類型擦除來處理泛型的傳統Java方式中,這是無法合理完成的;編譯器只是說,「嘿,我不知道T是什麼,所以我不覺得你允許你像這樣實例化一個T。」然而,在斯卡拉,這裏有一個詞語:體現。爲了包含T的清單,只需將該代碼的第一行更改爲

class MyClass[T : Manifest] { 

就是這樣。