kotlin - 未正确生成在 kotlin 类中的文件上注释的运行时注释

标签 kotlin

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/

相关文章:

generics - 如何为具有类型参数的类编写辅助构造函数?

android - 添加 Google Fit 距离(DataPoint 超出范围)

kotlin - 使用 ktor 将文件上传到 telegram bot api

android - 如何将 Parcel.readTypedList() 与 kotlin-android-extensions 中的 @Parcelize 一起使用?

android - Clean Architecture 和 Paging 3.0 with Room

java - Kotlin 对象父类(super class)型构造函数

android - Fragment 与 Fragment(或 Activity)之间的监听器

android - 如何在使用导航组件导航时保存 fragment 状态

list - 在 kotlin 中使用哪个函数来复制列表

将类传递给函数的 Kotlin 惯用方式