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)

  }

}
相关推荐
编码忘我1 分钟前
Spring源码又看了一遍
后端
季明洵4 分钟前
Java简介与安装
java·开发语言
myloveasuka6 分钟前
红黑树、红黑规则、添加节点处理方案
开发语言·算法
2301_810160957 分钟前
C++中的访问者模式高级应用
开发语言·c++·算法
m0_5180194810 分钟前
C++中的享元模式
开发语言·c++·算法
林夕sama11 分钟前
多线程基础(五)
java·开发语言·前端
波诺波11 分钟前
项目pid-control-simulation-main 中的 main.py 代码讲解
开发语言·python
我带你来这儿就是为了告诉你我15 分钟前
C++23新特性前瞻
开发语言·c++·算法
希望永不加班25 分钟前
SpringBoot 主启动类解释:@SpringBootApplication 到底做了什么
java·spring boot·后端·spring
一只叫煤球的猫28 分钟前
为什么不用 RAG 做记忆系统 ——压缩上下文与 memory.md 的架构选择
人工智能·后端·ai编程