2017-08-25 27 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