代码之家  ›  专栏  ›  技术社区  ›  huynhjl bhericher

找不到元素类型T的类清单

  •  17
  • huynhjl bhericher  · 技术社区  · 16 年前

    试图从中编译一些代码 this SO question cannot find class manifest for element type T . 下面是另一个显示行为的片段:

    scala> def f[T](a:T, b:T):Array[T] = { new Array[T](2) }
    <console>:4: error: cannot find class manifest for element type T
           def f[T](a:T, b:T):Array[T] = { new Array[T](2) }
    

    我看得出来 new collection.mutable.GenericArray[T](2) 解决了这个问题。显然地

    1 回复  |  直到 9 年前
        1
  •  19
  •   Thomas Jung    16 年前

    要提供类型信息,可以使用上下文绑定

    def f[T : Manifest](a:T, b:T):Array[T] = { new Array[T](2) }
    

    def f[T](a:T, b:T)(implicit manifest : Manifest[T]) : Array[T] = { new Array[T](2) }
    

    前者是后者的句法糖。这个 manifest 是必需的,因为由于泛型而缺少关于T的类型信息 type errasure

    推荐文章