在scala中,如何消除族类中依赖类型的“unchecked since it is removed by erasure”错误

e1xvtsh3  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(198)

考虑到以下类别:

import scala.reflect.api.Universe

trait OuterSpike2 {

  val universe: Universe

  type Type = universe.Type

  case class TypeView(
      self: Type,
      comment: Option[String] = None
  ) {

    lazy val baseTypes: List[TypeView] = {

      self match {
        case v: Type with scala.reflect.internal.Types#Type =>
        case _ =>

      }

      ???
    }
  }
}

在编译时,它给出了以下警告:

[Warn] /home/peng/git/shapesafe/graph-commons/src/main/scala/com/tribbloids/graph/commons/issues/OuterSpike2.scala:24: abstract type pattern OuterSpike2.this.universe.Type (the underlying of OuterSpike2.this.Type) is unchecked since it is eliminated by erasure

这个问题比泛型集合类中的匹配更困难(包含一个classtag可以很容易地解决这个问题,请参阅如何在scala上绕过类型擦除?或者,为什么不能获取集合的类型参数?)。在本例中,类型“type”依赖于this.universe的路径,对于该路径,没有容易表示的类标记。那么我应该如何指示编译器从另一个Angular 看呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题