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] {
就是这样。