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中的存根