【问题标题】:Scala arrays and parameterized typesScala 数组和参数化类型
【发布时间】:2012-02-09 07:26:48
【问题描述】:

我正在尝试定义一个泛型类,它采用参数化类型 T,然后在类中的 Array 定义中使用该类型。我写了以下我认为应该可以工作的内容

class MyClass[T] {

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

}

但编译器会抱怨以下内容

  • 找不到元素类型 T 的类清单
  • value newArray 不是 Null 的成员

有谁知道这里发生了什么以及它对什么不满意?

【问题讨论】:

    标签: arrays generics scala types


    【解决方案1】:

    编译器需要知道如何实例化 T 类型的东西。在传统的 Java 通过类型擦除处理泛型的方式中,这不能合理地做到;编译器只是说,“嘿,我不知道 T 是什么,所以我对允许你像这样实例化一个 T 感觉不太好。”然而,在 Scala 中,对此有一个说法:manifests。为了包含 T 的清单,只需将该代码的第一行更改为

    class MyClass[T : Manifest] {
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 2011-02-19
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多