和反射class不同,反射class和java反射一样,object是静态代码块模式的单例,Scala 反射的核心是 scala.reflect.runtime.universe:代码如下:
object:
文章来源:https://www.toymoban.com/news/detail-677030.html
object TargetObject{
def test1(name:String):String = {
println("11111111")
"1111"
}
}
反射调用:
反射 Scala object 核心是通过 staticModule 获取 ModuleMirror:文章来源地址https://www.toymoban.com/news/detail-677030.html
object MyTest {
def main(args: Array[String]): Unit = {
import scala.reflect.runtime.universe
val classMirror = universe.runtimeMirror(getClass.getClassLoader)
val staticMirror = classMirror.staticModule("xxx.xxx.TargetObject")
val moduleMirror = classMirror.reflectModule(staticMirror)
val objectMirror = classMirror.reflect(moduleMirror.instance)
val sayHelloSymbol = moduleMirror.symbol.typeSignature.member(universe.TermName("test1")).asMethod
val value = objectMirror.reflectMethod(sayHelloSymbol)("yege")
println(value)
}
}
到了这里,关于Scala反射调用object的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!