【发布时间】:2023-04-03 16:24:01
【问题描述】:
当我尝试编写一个接受任何Class[_] 作为参数的类时:
case class A(klass: Class[_])
我收到了这个错误:
test.scala:1: 警告:推断存在类型 Option[Class[_$1]] forSome { type $1 },不能用通配符表示,应该 通过使隐式值 scala.language.existentials 启用 可见的。这可以通过添加导入子句'import scala.language.existentials' 或通过设置编译器选项 -语言:存在主义。请参阅 Scala 文档以获取值 scala.language.existentials 以讨论为什么该功能应该是 明确启用。案例类A(类:类[]) ^ 发现一个警告
我很想知道为什么它不起作用。但是“价值 scala.language.existentials 的 Scala 文档”在哪里?我用谷歌搜索了“scaladoc scala.language.existentials”,但有一些我无法理解的线程。
澄清:我知道实现此类的“正确”方法是:
case class A[T](klass: Class[T])
但我想知道警告信息的含义。
【问题讨论】: