Скажем, у меня есть класс:
case class Foo(id: Int, name: String, note: Option[String] = None)
Как конструктор, так и метод apply в автоматически создаваемом объекте-компаньоне принимают три параметра. При просмотре с помощью отражения отмечен третий параметр (примечание):
p.isParamWithDefault = true
Кроме того, при проверке я могу найти метод, который создает значение в сопутствующем объекте:
method <init>$default$3
и
method apply$default$3
У обоих и есть:
m.isParamWithDefault = true
Однако я не могу ничего найти в TermSymbol для параметра notes, который на самом деле указывает мне на правильные методы, чтобы получить значение по умолчанию или что-либо из вышеперечисленных MethodSymbols, которые указывают на TermSymbol для параметра.
Есть ли прямой способ связать TermSymbol для параметра с методом, который генерирует значение по умолчанию? Или мне нужно что-то делать, например, проверять имена методов на сопутствующем объекте?
Мне это интересно как для примера конструктора case case, который я здесь, так и для обычных методов.