2016-04-06 1 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 
} 
} 

класса Вызывающего зеркало дает мне конструктор по умолчанию передавая имя и возраст, но там выводится конструктор слишком правильного, где я могу создать человек с значения по умолчанию и позволяют мне устанавливать их по мере необходимости.Как вызвать конструктор по умолчанию, используя SCALA отражения, если мы имеем значение по умолчанию определяется в нашем конструкторе

Как вы ссылаетесь на это в зеркале метода. Я ожидаю 4 конструктора в этом случае 1 с обоими значениями и 2 для отдельных полей и 1 без полей.

Я выбираю это как пример VO, поэтому, пожалуйста, не комментируйте дизайн. Вопрос заключается в том, как вывести конструкторы со значениями по умолчанию

ответ

0

Существует только один конструктор. Значения по умолчанию сохраняются в объекте Companion Person. Звонок new Person(age = 10) превращен в нечто вроде new Person(Person.<init>$default$1(), 10).

Смежные вопросы