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)

  }

}
相关推荐
C语言小火车28 分钟前
QT面试题:内存管理与对象生命周期
开发语言·qt·面试
字节源流3 小时前
【微服务】基础概念
后端·spring·spring cloud
雾月554 小时前
LeetCode 941 有效的山脉数组
java·开发语言·数据结构·算法·leetcode·职场和发展
晨曦5432105 小时前
函数和模式化——python
开发语言·python
leluckys5 小时前
swift-08-属性、汇编分析inout本质
开发语言·汇编·swift
嘤国大力士7 小时前
C++11&QT复习 (十六)
java·开发语言·c++
Asthenia04127 小时前
手搓Redis之为Zset而作的跳表实现逻辑梳理与面试问题解析
后端
uhakadotcom7 小时前
了解Dapr:构建分布式应用的强大工具
后端·面试·github