Мне нужно создать экземпляр класса Scala с использованием отражения.Искажение аргумента конструктора класса конструктора Scala
Я хочу использовать конструктор класса по умолчанию, который имеет аргументы со значениями по умолчанию, поэтому мне нужно получить эти значения по умолчанию.
Значения по умолчанию в Scala - это просто методы в JVM, поэтому мне нужно получить все методы класса и вызвать только те, которые возвращают значения по умолчанию.
Вопрос: Я вижу, что есть два различных соглашения об именовании методов, которые возвращает значения ARG по умолчанию - «применить $ по умолчанию $ X» и «$ lessinit $ больше $ по умолчанию $ X» (где X представляет собой число позиций конкретного аргумента). В чем разница между этими двумя? Возможно, это зависит от версии Scala или чего-то еще?
Я понял, спасибо! –
Но дополнительный вопрос: почему существуют два разных метода значений по умолчанию для apply() и? Если я объявляю класс Foo (bar: Int = 0), то объект-компаньон должен также использовать это конкретное значение, а два метода - только шаблон. –
Я предполагаю, что это просто, чтобы не сделать это особым случаем. При вводе вызовов метода значения по умолчанию компилятор в настоящее время должен знать имя метода и подпись. –