Я играю с рефлексией, чтобы добиться глубокого анализа черты. Одна из вещей, которые я хотел бы получить, - это начальное значение, установленное для поля члена. Например, в признаке:
trait A {
val x: Int = 3
val y: String = "y"
}
хорошо бы знать 3 и "у". Я не нашел ничего, связанного с этой задачей в API, и из-за следующего вывода (, сгенерированного scalac -Xprint):
abstract trait A extends Object {
<accessor> def com$hablapps$A$_setter_$x_=(x$1: Int): Unit;
<accessor> def com$hablapps$A$_setter_$y_=(x$1: String): Unit;
<stable> <accessor> def x(): Int;
<stable> <accessor> def y(): String
};
abstract trait A$class extends {
def /*A$class*/$init$($this: com.hablapps.A): Unit = {
$this.com$hablapps$A$_setter_$x_=(3);
$this.com$hablapps$A$_setter_$y_=("y");
()
}
}
Боюсь, получить к ним доступ будет довольно сложно, так как они хранятся в теле метода $init$. Есть ли (простой )способ получить эти значения с отражением?