Aspectj不能和kotlin一起工作
我想在kotlin中使用aspectj aop,这里是我的代码:
我在annotation.lazy_list中的注释:
科特林:
package anotation @Retention(AnnotationRetention.RUNTIME) @Target(AnnotationTarget.FUNCTION) annotation class lazy_list
我的课程:
@Aspect class ActiveListAop{ @Pointcut("execution(@annotation.lazy_list * *(..))") fun profile() { } @Before("profile()") fun testModeOnly(joinPoint: JoinPoint) { println("123") } }
我的用法:
@lazy_list fun all():List<T>{ return lazy_obj?.all() as List<T> }
当我打电话all()函数,没有错误,但不会打印“123”,为什么?
对于Kotlin中的注释过程,您必须启用并使用KAPT 。 如果没有通过Gradle或Maven插件添加,则在Kotlin代码中没有任何工作可用于注释处理。
Kotlin插件支持像Dagger或DBFlow这样的注释处理器。 为了让他们使用Kotlin类,请使用kotlin-kapt插件。
也可以看看:
- 推动Kotlin注解处理的极限
- kapt:Kotlin的注释处理
- 更好的注释处理:支持kapt中的存根