Scala リフレクションはより多くのことを行い、より多くを必要とするため、より困難です。例えば:
- タイプは消去されません。クラスは消去されますが、型は消去されません。
- Scala は名前付きパラメーターをサポートしているため、パラメーターの名前が必要です。
- Scala には、パラメーター リストのないメソッドがあります。
それで、すべてを考えると、これがあなたのやり方です。まず、メソッドを取得します。
val stringMethods: Iterable[MethodSymbol] = typeOf[String].members.collect {
case m if m.isMethod => m.asMethod
}
Scala リフレクションは (まだ) 特定の種類のメンバー (メソッド、フィールド、内部クラスなど) をリストするメソッドを提供していないため、一般的なmembers
メソッドを使用する必要があります。
すべての種類のメンバーに対して機能するこのメソッドは、すべてのシンボルの最大公約数members
である の iterable を返すため、結果のシンボルをメソッドとして扱うには にキャストする必要があります。Symbol
MethodSymbol
MethodSymbol
があり、引数の型が必要だとしましょう。できるよ:
method.paramss