Может ли отражение извлекать начальные значения, используемые в трейте?

Я играю с рефлексией, чтобы добиться глубокого анализа черты. Одна из вещей, которые я хотел бы получить, - это начальное значение, установленное для поля члена. Например, в признаке:

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$. Есть ли (простой )способ получить эти значения с отражением?

5
задан jeslg 19 July 2012 в 15:18
поделиться