Kotlin 编译器删除了在字段上注释的 Java 运行时注释。注释如下所示。
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@com.fasterxml.jackson.annotation.JacksonAnnotation
public @interface JsonDeserialize
我在一个字段上声明了它,如下所示。
@JsonSerialize(using = IDEncryptJsonSerializer::class)
@JsonDeserialize(using = IDDecryptJsonDeserializer::class)
@Column(name = "sku_id", nullable = false)
open var skuId: Long = 0L
注释不起作用。然后,我仔细查看了类文件,如下所示。
@field:javax.persistence.Column public open var skuId: kotlin.Long
JsonDeserialize 和 JsonSerialize 注释被取消。 这两个注释在 Java 中运行良好。 我的 Kotlin 版本是 1.1.4。 我该如何解决这个问题?
最佳答案
最后,我找到了造成这种现象的原因。 如果我在类构造函数中声明一个变量,则可能无法正确编译对该变量进行注释的某些注释。 由于 kotlin 编译器错误,一些注释可能会丢失。 然后,我在类主体中移动变量。一切正常。
关于kotlin - 未正确生成在 kotlin 类中的文件上注释的运行时注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45874554/