当前位置: 首页 > 知识库问答 >
问题:

在kotlin中使用注释处理器

蒲寂离
2023-03-14

我的处理器中有一个简单的注释,如下所示:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE) @Retention(RetentionPolicy.CLASS)
public @interface BundleBuilder
{
    // ...
}

这适用于java文件,但一旦我将文件转换为kotlin,注释的导入就不再有效。为什么?

我需要改变什么才能让他的注释也在Kotlin中工作?从文档中,我可以看到kotlin与java注释100%兼容,所以我有点困惑这里有什么问题...如果处理器不工作,需要调整以与kotlin一起工作,我会理解,但我不知道为什么导入本身不工作...

我说的图书馆在这里:https://github.com/MFlisar/BundleArgs

共有1个答案

谈琛
2023-03-14

我认为您应该在构建中使用kapt进行注释处理。渐变。毕竟,清理和重建您的项目,这样做。

apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

//...

dependencies {
    compileOnly 'com.github.MFlisar.BundleArgs:bundleargs-annotation:1.3'
    kapt 'com.github.MFlisar.BundleArgs:bundleargs-processor:1.3'
}

repositories {
    maven { url "https://jitpack.io" }
}
 类似资料:
  • 我看到一个例子解释了Kotlin JVM的KATP,它正在工作。 我想知道它是否支持Kotlin JS?有什么例子吗?

  • 我的gradle构建: 处理器不在单独的模块中。 处理器不做任何事情,在< code>#process中,它只是抛出,看看它是否在工作。 但绝对没有发生任何事情。没有错误,什么都没有。我怎样才能使它工作?

  • 在添加com.google.dagger:dagger-android-support依赖项后,我得到了这个gradle错误。 这是我的构建的一部分

  • 我想从kotlin实体类生成jpa querydsl文件。 在线上有一个很好的例子,说明如何使用gradle生成dsl文件https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-querydsl/build.gradle. 然而,我试图在maven中实现它,但没有运气。我目前的pom在下面。有人知道问题可能是什么

  • 通常,当我在Kotlin代码中使用Java库中的注释时,我必须指定target以指定编译代码中必须注释的元素: 而不是指定,我希望能够简单地使用,特别是如果它发生在许多地方。 问题:有没有一种方法可以提示Kotlin编译器在所有位置使用不同的目标,这样如果我使用,它就会像处理一样处理它?或者有没有其他方法可以省略指定目标?如何实现这一目标?是否可以在编译阶段通过注释处理完成(像Lombok那样)?

  • 我无法在我的Kotlin Spring Boot应用程序中正确地注入应用程序属性。在我的文件中定义并随后在文件中引用的属性(在resources->META-INF下)没有正确地添加到bean表达式上下文中。使用,当我将鼠标悬停在该属性上时,我会看到错误。试图运行应用程序(将配置属性值construction-inject到类中)会导致通过构造函数参数表示的