我正在尝试定义一个采用参数化类型T的泛型类,然后在类中使用Array定义中的类型。我写了下面的内容,我认为它似乎应该起作用
class MyClass[T] {
val myarr:Array[T] = new Array[T](10)
}
但编译器抱怨以下
任何人都知道这里发生了什么,不满意的是什么?
答案 0 :(得分:9)
编译器需要知道如何实例化类型为T的东西。在通过类型擦除处理泛型的传统Java方法中,这是不可能合理地完成的;编译器只是说,“嘿,我不知道T是什么,所以我不觉得让你像那样实例化T一样。”然而,在Scala中,有一个词汇:清单。为了包含T的清单,只需将该代码的第一行更改为
即可class MyClass[T : Manifest] {
就是这样。