2016-04-06 5 views
1
class Person(name: String = "noname", age:Int = -1){} 

object ReflectionTester{ 
def main(args: Array[String]) { 
    val m = ru.runtimeMirror(getClass.getClassLoader) 
    val classTest = m.staticClass("Person") 
    val theType = classTest.toType 

    //class mirror 
    val cm = m.reflectClass(classTest) 
    val ctor = theType.decl(ru.termNames.CONSTRUCTOR).asMethod 
} 
} 
gibt mir definiert haben

Hervorrufen Klasse Spiegel den Standardkonstruktor von Namen und Alter vorbei, aber es ist geschlossen Konstruktor auch genau da, wo ich mit einer Person erstellen Standardwerte und erlauben Sie mir, sie nach Bedarf einzustellen.Wie Standardkonstruktors mit scala Reflexion berufen, wenn wir Standardwert in unserem Konstruktor

Wie rufen Sie das in Methode Spiegel auf. Ich erwarte 4 Konstruktoren in diesem Fall 1 mit beiden Werten und 2 für einzelne Felder und 1 ohne Felder.

Ich wähle dies als Beispiel VO also bitte nicht das Design kommentieren. Die Frage ist, wie man die Konstruktoren mit Standardwerten ableitet.

Antwort

0

Es gibt nur einen Konstruktor. Die Standardwerte werden im Begleitobjekt Person gespeichert. Ein Anruf new Person(age = 10) wird in etwas wie new Person(Person.<init>$default$1(), 10) umgewandelt.

Verwandte Themen