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)

  }

}
相关推荐
潜创微科技12 小时前
CH9245:双 Type‑C 转 PD 芯片方案,便携显示与拓展坞的理想选择
c语言·开发语言
【 】42312 小时前
pyhon相对导入
开发语言·python
小同志0012 小时前
IoC 详解
java·开发语言
t***54412 小时前
如何在 Dev-C++ 中设置和使用 Clang 编译器
开发语言·c++
csbysj202013 小时前
Markdown 段落格式
开发语言
楼田莉子13 小时前
CMake学习:CMake语法
c++·后端·学习·软件构建
无限进步_13 小时前
C++ 继承机制完全解析:从基础原理到菱形继承问题
java·开发语言·数据结构·c++·vscode·后端·算法
武子康13 小时前
大数据-278 Spark MLib-GBDT梯度提升决策树详解:从原理到实战案例
大数据·后端·spark
SamDeepThinking13 小时前
适合中小型企业的出口入口网关微服务
java·后端·架构
leo__52013 小时前
基于时延的麦克风声源定位 - C实现
c语言·开发语言·算法