/ / स्कैला प्रतिबिंब: ज्ञात डायरेक्टस्बक्लास केवल सीलबंद गुणों के लिए काम करता है? - स्कैला, प्रतिबिंब, स्कैला-प्रतिबिंबित

स्कैला प्रतिबिंब: ज्ञात डायरेक्टस्बक्लास केवल सीलबंद गुणों के लिए काम करता है? - स्कैला, प्रतिबिंब, स्कैला-प्रतिबिंबित

दिया हुआ यह प्रश्न तथा एसआई-7046, यह वही नहीं है जो मैंने अपेक्षित था।

scalac test.scala && scala Test निम्नलिखित प्रिंटों पर स्कैला 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) जैसा सोचा था।

यहाँ क्या चल रहा है?

उत्तर:

जवाब के लिए 2 № 1

डॉक्टर को देखो

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