Scala中反射

import scala.beans.BeanProperty
case class ScalaGirl(@BeanProperty var name:String,@BeanProperty var age:String) {def this()=this(null,null)}
object ScalaMain {
def main(args: Array[String]): Unit = {
var girl=ScalaGirl(“l”,“12”)
//获得反射对象
var girlClass=classOf[ScalaGirl]

 classOf[ScalaGirl].getDeclaredFields.foreach(x=>{var method=girlClass.getMethod("set"+x.capitalize,classOf[String]);method.invoke(girl,"like")})
 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)

}
}

###ok#######################
case class Person(@BeanProperty var d_area_id:String,@BeanProperty var flow_pn:String,@BeanProperty var src_source_city_pt:String){def this()=this(null,null,null)}
var person=Person(“l”,“12”)
var personClass=classOf[Person]
classOf[Person].getDeclaredFields.filter(!.getName.startsWith("$")).foreach(x=>{
val str = “set”+Array(x.getName).map(
.capitalize).head;
println(str);
println()
var method=personClass.getMethod(str,classOf[String]);
method.invoke(person,“like2”)
})
#################################

###test#######################
case class Person(@BeanProperty var d_area_id:String,@BeanProperty var flow_pn:String,@BeanProperty var src_source_city_pt:String){def this()=this(null,null,null)}
var person=Person(“l”,“12”,“33”)
var personClass=classOf[Person]
classOf[Person].getDeclaredFields.filter(!_.getName.startsWith("$")).foreach(x=>{
println(x.getName)
val field = personClass.getDeclaredField(x.getName)
field.setAccessible(true)
print(field.get(person))
field.set(person,“123456”)
})
#################################

#######OK############################
// val resultDF = indexWholeNetDF.flatMap(row=>{
// val whloeNetObj = row.copy()
// whloeNetObj.data_type = GlobalConstants.DATA_WHOLENET
// val nightTouristIndexClass = classOf[NightTouristIndex]
// classOf[NightTouristIndex].getDeclaredFields.filter(!_.getName.startsWith("$")).foreach(x=>{
// if(!unEvaluateFields.contains(x.getName)){
// val rate = if(x.getName.endsWith("_pn")) row.rate_pn else row.rate_pt
// val field = nightTouristIndexClass.getDeclaredField(x.getName)
// field.setAccessible(true)
// field.set(whloeNetObj,evaluateWholeNetNum(if(field.get(whloeNetObj)!=null) field.get(whloeNetObj).toString else null,rate))
// }
// })
// List(row,whloeNetObj)
// })
###############################################

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值