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)

  }

}
相关推荐
zhangfeng113326 分钟前
openclaw skills 小龙虾技能 通讯仿真 matlab skill Simulink Agentic Toolkit,通过kimi找到,mcp通讯
开发语言·matlab·openclaw·通讯仿真
Lee川6 小时前
LangChain 加持:后端 AI 流式对话的优雅实现
后端
chao1898447 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
赏金术士7 小时前
Kotlin 习题集 · 高级篇
android·开发语言·kotlin
子兮曰8 小时前
Bun v1.3.14 深度解析:Image API、HTTP/3、全局虚拟存储与五十项变革
前端·后端·bun
ltl8 小时前
Self-Attention:让序列自己看自己
后端
楼兰公子8 小时前
buildroot 在编译rust时裁剪平台类型数量的方法
开发语言·后端·rust
吴声子夜歌9 小时前
Go——并发编程
开发语言·后端·golang
释怀°Believe9 小时前
Spring解析
java·后端·spring
ooseabiscuit9 小时前
Laravel4.x:现代PHP框架的奠基之作
java·开发语言·php