2017-08-25 12 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注釈が却下されています。 2つの注釈はJavaでうまく機能します。 私のkotlinバージョンは1.1.4です。 問題を解決するにはどうすればよいですか?

+0

こんにちは、この正確な例をKotlin '1.1.3-2'と' 1.1.4-2'で試しました。両方のために働く。どちらの逆コンパイラを使用しますか?あなたは問題を再現する場所に小さな小さなギター・レポを提供することができますか? – guenhter

+0

@guenhter返事ありがとうございました、私は答えの理由を説明しました。 – Iconoclast

答えて

1

最後に、この現象が発生する理由がわかりました。 クラスコンストラクタで変数を宣言すると、その変数の注釈の一部が正しくコンパイルできないことがあります。 kotlinコンパイラのバグにより、注釈の一部が失われる可能性があります。 次に、クラス本体の変数を移動します。すべてうまくいく。

+2

http://kotl.in/issueで問題を報告する必要があります –

+1

@KirillRakhmanウェブサイトにログインしようとしました。残念ながら、ログインボタンをクリックすると、常にログインページにリダイレクトされます。私は@ kotlinオフィスtwitterを持っています。私は返事を待っている。 – Iconoclast

関連する問題