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)

  }

}
相关推荐
半桶水专家2 小时前
go语言中的结构体嵌入详解
开发语言·后端·golang
在屏幕前出油3 小时前
二、Python面向对象编程基础——理解self
开发语言·python
阿方索4 小时前
python文件与数据格式化
开发语言·python
佳佳_4 小时前
关于在 Fabric.js 中注册字体覆盖的问题
后端·node.js
GoGeekBaird4 小时前
通过ChatGPT+Nano Banana定制一个 PPT 生成的工作流
后端
用户21411832636025 小时前
手把手教你部署AI视频复刻神器!一键生成Sora2级别视频
后端
weixin_440730505 小时前
java结构语句学习
java·开发语言·学习
JIngJaneIL5 小时前
基于java+ vue医院管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
量子联盟5 小时前
功能完整的PHP站点导航管理系统php程序;开源免费下载
开发语言·php
仙俊红5 小时前
在 Java 中,`==` 和 `equals()` 的区别
java·开发语言·jvm