我写过了java的反射,kotlin的反射,轮到scala了
scala使用的是java的反射(scala的反射使用着不如java反射方便),那么用法就差不多了
先随便来个函数
import scala.beans.BeanProperty
case class ScalaGirl(@BeanProperty var name:String,@BeanProperty var age:String) {
}
先解释下代码,case相当有kotlin的data会自动序列化生成toString等一系列方法,但是在scala里无法使用无参的构造函数,在有的框架里会默认使用无参构造函数,所以使用时要注意下
object ScalaMain {
def main(args: Array[String]): Unit = {
var girl=ScalaGirl("l","12")
//获得反射对象
var girlClass=classOf[ScalaGirl]
girl.name="love"
girl.age="18"
print(girl)
//获得反射方法
var method=girlClass.getMethod("setName",classOf[String])
method.invoke(girl,"like")
print(girl)
//获得构造函数
var con=girlClass.getConstructor(classOf[String],classOf[String])
var newGirl=con.newInstance("zouren","19")
print(newGirl)
}
}
这里说一下classof[String]等同于java的String.class,代码不多,其余的写法也差不多