私は、特性の詳細な分析を達成するために、リフレクションで遊んでいます。私が取得したいものの1つは、メンバーフィールドに設定された初期値です。たとえば、トレイトでは:
trait A {
val x: Int = 3
val y: String = "y"
}
3と「y」を知っているといいでしょう。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$メソッドの本体に保持されているため、アクセスするのは非常に困難になると思います。これらの値を反映して取得する(簡単な)方法はありますか?