Scala反射:knownDirectSubclasses只适用于密封特征



考虑到这个问题和SI-7046,这根本不是我所期望的。

Scala2.11.6中的scalac test.scala && scala Test在下面打印一个空的Set():

trait Foo
case class Bar() extends Foo
case class Baz() extends Foo
object Test {
  def main(args: Array[String]) {
    import scala.reflect.runtime.universe._
    println( typeOf[Foo].typeSymbol.asClass.knownDirectSubclasses )
  }
}

但是,如果我将trait Foo更改为sealed trait Foo,它将按预期打印Set(class Bar, class Baz)

这是怎么回事?

查看文档

/** If this is a sealed class, its known direct subclasses.
 *  Otherwise, the empty set.
 *
 *  @group Class
 */
def knownDirectSubclasses: Set[Symbol]

相关内容

  • 没有找到相关文章

最新更新