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)

  }

}
相关推荐
geovindu22 分钟前
go: Visitor Pattern
开发语言·设计模式·golang·访问者模式
宣宣猪的小花园.23 分钟前
C语言重难点全解析:内存管理到位运算
c语言·开发语言·单片机
方安乐4 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
小小小米粒6 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
前端一小卒7 小时前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端
czhc11400756637 小时前
C# 428 线程、异步
开发语言·c#
:1217 小时前
java基础
java·开发语言
SilentSamsara8 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
曹牧8 小时前
Spring:@RequestMapping注解,匹配的顺序与上下文无关
java·后端·spring
小短腿的代码世界8 小时前
Qt文件系统与IO深度解析:从QFile到异步文件操作
开发语言·qt