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)

  }

}
相关推荐
用户4419395054878 分钟前
OpenClaw服务器部署保姆级教程
后端
清风徐来QCQ8 分钟前
八股文(1)
java·开发语言
zdl6869 分钟前
springboot集成onlyoffice(部署+开发)
java·spring boot·后端
Soofjan11 分钟前
sync.Mutex讲解
后端
lsx20240612 分钟前
网站主机技术
开发语言
Soofjan12 分钟前
sync.RWMutex 源码解析
后端
摇滚侠14 分钟前
你是一名 java 程序员,总结定义数组的方式
java·开发语言·python
code_Bo20 分钟前
使用AI完成Swagger接口类型在前端自动生成的工具
前端·后端·架构
开心就好202523 分钟前
Flutter iOS 包破解风险处理 可读信息抹除
后端·ios
xyq202424 分钟前
Vue3 条件语句详解
开发语言