在Kotlin中我们有两种方式来实现反射的功能。一种是调用Java的反射包 java.lang.reflect 下面的API,另外一种就是直接调用Kotlin的kotlin.reflect 包下面的API。
直接贴代码吧
data class KotlinGirl(
var name:String?=null,
var age:String?=null)
先来个构造函数
然后是代码,这里代码只做几个简单的反射,其余用法差不多
fun main() {
//java方式反射
var girlClass = KotlinGirl::class.java
val con= girlClass.getConstructor(String::class.java, String::class.java)
var newGirl=con.newInstance("love", "18")
print(newGirl)
//kotlin方式反射
var girl=KotlinGirl()
val con1=girl::age
con1.set("123")
print(girl)
}
第一种用java的反射创建了一个KotlinGirl的实体对象
第二种用kotlin自带反射修改了新的实体对象中age的值,
对比一下,首先java的反射速度远快于kotlin,这一点官方解释是没时间,第二就是kotlin对于方法和成员变量的反射用着非常简单舒服,但是构造函数就不是太舒服了,大家可以试试
最后,本来是想把scala和Groovy等几个的反射写一篇,图片太多了,分开写吧