Scala反射调用object

和反射class不同,反射class和java反射一样,object是静态代码块模式的单例,Scala 反射的核心是 scala.reflect.runtime.universe:代码如下:

object:

Scala 复制代码
object TargetObject{
  def test1(name:String):String = {
    println("11111111")
    "1111"
  }
}

反射调用:

反射 Scala object 核心是通过 staticModule 获取 ModuleMirror:

Scala 复制代码
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.TargetBejte")
    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)

  }

}
相关推荐
zhougl996几秒前
Java Object.clone() 浅拷贝与深拷贝全解析
java·开发语言
飘若随风2 分钟前
JS学习系列-01-什么是JS
开发语言·javascript·学习
余瑜鱼鱼鱼2 分钟前
线程池总结
java·开发语言
定偶4 分钟前
网络编程总结
开发语言·网络·数据结构·网络编程
claem7 分钟前
Mac端 Python脚本创建与理解
开发语言·python·macos
CoderCodingNo7 分钟前
【GESP】C++五级练习题 luogu-B3628 机器猫斗恶龙
开发语言·c++·算法
what丶k7 分钟前
你应该更新的 Java 知识:Record 特性深度解析
java·开发语言
mango_mangojuice20 分钟前
C++ 学习笔记(string类)
开发语言·c++·笔记·学习
2301_8223663523 分钟前
C++中的智能指针详解
开发语言·c++·算法
kdniao128 分钟前
PHP 页面中如何实现根据快递单号查询物流轨迹?对接快递鸟在途监控 API 实操
android·开发语言·php