4

鉴于 这个问题SI-7046,这根本不是我所期望的。

scalac test.scala && scala Test在以下 Scala 2.11.6 中打印一个空的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)

这里发生了什么?

4

1 回答 1

3

看医生

/** If this is a sealed class, its known direct subclasses.
 *  Otherwise, the empty set.
 *
 *  @group Class
 */
def knownDirectSubclasses: Set[Symbol]
于 2015-12-15T05:25:51.497 回答