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)

  }

}
相关推荐
间彧几秒前
Java 泛型擦除详解和项目实战
后端
嵌入式小李.man几秒前
C++第十三篇:继承
开发语言·c++
间彧4 分钟前
在自定义泛型类时,如何正确应用PECS原则来设计API?
后端
间彧5 分钟前
能否详细解释PECS原则及其在项目中的实际应用场景?
后端
Bryce李小白7 分钟前
Kotlin Flow 的使用
android·开发语言·kotlin
武子康29 分钟前
大数据-132 Flink SQL 实战入门 | 3 分钟跑通 Table API + SQL 含 toChangelogStream 新写法
大数据·后端·flink
jarreyer34 分钟前
python离线包安装方法总结
开发语言·python
李辰洋36 分钟前
go tools安装
开发语言·后端·golang
wanfeng_0941 分钟前
go lang
开发语言·后端·golang
绛洞花主敏明43 分钟前
go build -tags的其他用法
开发语言·后端·golang