スカラ反射は、コンパイル時と実行時の両方に設計されています。したがって、型の削除に悩むJava(以前の投稿In Scala Reflection, How to get generic type parameter of a concrete subclass?を参照)よりも多型メソッドをより効果的に識別できます。ScalaのリフレクションMethodSymbol/MethodSignatureをJavaメソッドに変換する最も簡単な方法は何ですか?
しかし、このメソッドは、Javaの対応オブジェクトよりもわずかに遅いScala reflectionのミラーを使用してのみ呼び出すことができます.ScalaのMethodSymbolを簡単に変換できるかどうかを知りたい場合は、Type.membersから返されます。
import import scala.reflect.runtime.universe._
val tpe = typeTag[String].tpe
val methodSymbol = tpe.method("size": Name)
又はType.member.SignatureIn(タイプ)によって返されるMethodSignature、:直接JavaリフレクションAPIを介して呼び出すことができるJavaメソッドへ
val methodSignature = methodSymbol.typeSignatureIn(tpe)
:
val size = method.invoke("abc")
size: Int = 3
可能ですか?