scala中的反射机制
(2020-03-29 00:04:24)
标签:
scala反射reflect示例 |
分类: 编程技术 |
====scala中通过反射机制读取属性的值=========
一、大致思路
1、通过getClass()定位到实例类,通过getDeclaredField定位到具体某个属性值
2、通过isAccessible确认属性值是否可以直接读取,不行的话则通过setAccessible(true)设置为可访问权限
3、通过 属性值.getXX(实例类)
的方法读取到具体的属性值数据
二、示例代码
object ReflectTest {
}
输出值为:
false
true
age: 21
false
true
age: 43
false
true
age: 15
====scala中通过反射机制执行函数=========
val classMirror =
ru.runtimeMirror(getClass.getClassLoader)
//获取运行时类镜像
val classTest =
classMirror.staticModule("com.testobject")
//获取需要反射object
val methods =
classMirror.reflectModule(classTest)
//构造获取方式的对象
val objMirror =
classMirror.reflect(methods.instance)
//反射结果赋予对象
val method =
methods.symbol.typeSignature.member(ru.TermName(s"$函数名")).asMethod
//反射调用函数
val result =
objMirror.reflectMethod(method)(入参1, 入参2)
//最后带参数,执行这个反射调用的函数
result.asInstanceOf[String]
//结果强转下类型
后一篇:DBSCAN聚类算法