2017-08-25 31 views
1

Kotlin编译器删除注释在字段上的Java运行时注释。注释如下所示。在kotlin类中的字段上注释的运行时注释未正确生成

@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。 我该如何解决这个问题?

+0

嗨,我尝试了Kotlin'1.1.3-2'和'1.1.4-2'的确切例子。适用于他们两人。你使用哪个反编译器?你可能会提供一个微小的github回购问题来重现问题吗? – guenhter

+0

@guenhter谢谢你的回复,我解释了答案的理由。 – Iconoclast

回答

1

最后,我找到了导致这种现象的原因。 如果我在类构造函数中声明一个变量,那么对该变量的一些批注注释可能无法正确编译。 由于kotlin编译器错误,某些注释可能会丢失。 然后,我移动类体中的变量。一切运作良好。

+2

您应该在http://kotl.in/issue上报告问题 –

+1

@KirillRakhman我试图登录网站。不幸的是,当我点击登录按钮时,它总是重定向到登录页面。我有@ kotlin办公室推特。我在等待回复。 – Iconoclast