考虑到这个问题和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]