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)

  }

}
相关推荐
IT_陈寒9 小时前
90%的Python开发者不知道:这5个内置函数让你的代码效率提升300%
前端·人工智能·后端
小年糕是糕手9 小时前
【C++】C++入门 -- inline、nullptr
linux·开发语言·jvm·数据结构·c++·算法·排序算法
郝学胜-神的一滴9 小时前
Python中一切皆对象:深入理解Python的对象模型
开发语言·python·程序人生·个人开发
我的虾分发9 小时前
虾分发平台提供多种价格套餐
后端
风雨同舟的代码笔记9 小时前
第14讲:CompletableFuture(上)——构建异步应用
后端
g***78919 小时前
SpringBoot中使用TraceId进行日志追踪
spring boot·后端·状态模式
csbysj20209 小时前
JSP 隐式对象
开发语言
星期天29 小时前
3.2联合体和枚举enum,还有动态内存malloc,free,calloc,realloc
c语言·开发语言·算法·联合体·动态内存·初学者入门·枚举enum
九夜10 小时前
基于 .ibd 文件恢复 MySQL 数据全流程
后端·github
2509_9408802210 小时前
springboot集成onlyoffice(部署+开发)
java·spring boot·后端