Scala的反射基本运用

本文通过实例讲解Scala中如何使用反射,包括获取和调用方法、构造函数等,揭示Scala与Java反射的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我写过了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,代码不多,其余的写法也差不多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值