4
我想定義一個泛型類,它需要一個參數化類型T,然後在類的數組定義中使用該類型。我寫的,我覺得好像它應該工作Scala數組和參數化類型
class MyClass[T] {
val myarr:Array[T] = new Array[T](10)
}
但是,編譯器有以下
- 找不到類清單的元素類型T
- 值newArray不是抱怨以下Null的成員
任何人都知道這裏發生了什麼以及它不開心嗎?
我想定義一個泛型類,它需要一個參數化類型T,然後在類的數組定義中使用該類型。我寫的,我覺得好像它應該工作Scala數組和參數化類型
class MyClass[T] {
val myarr:Array[T] = new Array[T](10)
}
但是,編譯器有以下
任何人都知道這裏發生了什麼以及它不開心嗎?
編譯器需要知道如何實例化T類型的東西。在通過類型擦除來處理泛型的傳統Java方式中,這是無法合理完成的;編譯器只是說,「嘿,我不知道T是什麼,所以我不覺得你允許你像這樣實例化一個T。」然而,在斯卡拉,這裏有一個詞語:體現。爲了包含T的清單,只需將該代碼的第一行更改爲
class MyClass[T : Manifest] {
就是這樣。