Kotlin学习(12)元编程

本文介绍了Kotlin中的元编程,包括如何处理注解,如@TestCase,以及如何通过反射调用函数。文章展示了如何遍历类的成员并检查注解,以执行相应的处理逻辑。此外,还探讨了Kotlin的反射机制,包括类引用、函数引用、属性引用以及获取泛型信息的方法。最后,通过示例代码说明了在实际应用中如何运用这些概念。
摘要由CSDN通过智能技术生成

例如:

annotation class AnnoX(val value: String)

annotation class AnnoY(

val message: String

val annoX: AnnoX = AnnoX(“X”))

2.3 处理注解

如果没有相应的注解信息处理逻辑流程,那么注解可以说是废了,没有什么实用价值。

首先,我们的目标测试类是:

@Run

class SwordTest() {

@TestCase(id = “a”)

fun testCase(testId: String) {

println(“Run SwordTest Id = $testId”)

}

}

我们需要在 @TestCase注解作用在函数上的处理过程

  1. ::class 引用

首先声明一个变量指向SwordTest实例

然后就可以通过这个变量来获取该对象的类的信息,使用 ::class来获取 sword对象实例的 KClass类的引用

val sword = SwordTest()

val kClass = sword::class

//有点像Java中的 getClass()

//上面这行代码,Kotlin编译器会自动推断出 kClass变量的类型是

val kClass:KClass = sword::class

  1. members扩展属性

下面我们需要获取 sword对象类型所声明的所有函数。Kotlin中 可以直接使用扩展属性 declaredFunctions来获取这个类中声明的所有函数。

//返回的是一个 Collection<KCallable<>> 其中是Koltlin泛型中的星投影

val members = kClass.members

  1. annotations属性

KFunction 类型继承了 KCallable,KCallable又继承了 KAnnotatedElement。KAnnotatedElement中有个public val annotations:List</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值