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 分钟前
Java内存模型(JMM)详解
java·开发语言
谈笑也风生3 分钟前
经典算法题型之复数乘法(二)
开发语言·python·算法
hkNaruto5 分钟前
【C++】记录一次C++程序编译缓慢原因分析——滥用stdafx.h公共头文件
开发语言·c++
开心猴爷11 分钟前
Swift IPA 混淆在工程实践中的方式,分析仅依赖源码层混淆的局限性
后端
用户40993225021227 分钟前
Vue3 v-if与v-show:销毁还是隐藏,如何抉择?
前端·vue.js·后端
先知后行。28 分钟前
python的类
开发语言·python
黄俊懿28 分钟前
【深入理解SpringCloud微服务】Seata(AT模式)源码解析——全局事务的回滚
java·后端·spring·spring cloud·微服务·架构·架构师
派大鑫wink33 分钟前
【Day12】String 类详解:不可变性、常用方法与字符串拼接优化
java·开发语言
Java编程爱好者34 分钟前
SpringBoot启动太慢?几个优化技巧
后端
喷火龙8号34 分钟前
修复 Hertz + OpenTelemetry 链路追踪中的数据竞争问题
后端