第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Kotlin 注釋不在 fieldDecleration 或已編譯的 java 中

Kotlin 注釋不在 fieldDecleration 或已編譯的 java 中

牛魔王的故事 2023-06-14 16:44:26
對于我在 Kotlin 中的數據對象,我為 GSON 添加了一個自定義注釋以具有排除規(guī)則。在過去,它工作得很好,現在它沒有出現在我的類反射 ( this.javaClass.declaredFields[3].annotationsis null) 中,也沒有出現在編譯的 java 輸出中。我嘗試了不同的事情,比如升級我的 kotlin 版本、添加 kotlin-kapt、使用不同的@Retention類型、重新啟動我的計算機(你永遠不知道)并查看了其他注釋。那些其他注釋(例如 Hibernate a @OneToOne)顯示沒有問題。注釋定義:@Retention(AnnotationRetention.RUNTIME)@Repeatable@Target(        AnnotationTarget.FIELD,        AnnotationTarget.PROPERTY_GETTER,        AnnotationTarget.PROPERTY_SETTER,        AnnotationTarget.PROPERTY,        AnnotationTarget.VALUE_PARAMETER)annotation class ExcludeFromJSON在數據類中的用法:@Entity@Table(name = "user")class User (        var username: String = "",        var email: String = "",        @ExcludeFromJSON        private var password: String) {}我希望注釋出現在 javaClass 反射和編譯的 java 代碼中。它既不。編譯后的密碼 var(無注釋...):private final var password: kotlin.String /* compiled code */`
查看完整描述

1 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

您應該使用適當的使用站點目標來限定注釋:

@field:ExcludeFromJSON
private?var?password:?String

這將導致注釋出現在此屬性生成的 Java 字段上。

來自Kotlin Reference?regarding?Annotation Use-site Targets:

當您注釋屬性或主要構造函數參數時,有多個 Java 元素是從相應的 Kotlin 元素生成的,因此在生成的 Java 字節(jié)碼中有多個可能的注釋位置。[...]

[...]

支持的使用站點目標的完整列表是:

  • file;

  • property(具有此目標的注釋對 Java 不可見);

  • field;

  • get(財產獲取者);

  • set(屬性設置器);

  • receiver(擴展函數或屬性的接收參數);

  • param(構造函數參數);

  • setparam(屬性設置器參數);

  • delegate(存儲委托屬性的委托實例的字段)。

[...]

如果您不指定使用站點目標,則根據@Target所使用的注釋的注釋來選擇目標。如果有多個適用目標,則使用以下列表中的第一個適用目標:

  • param;

  • property;

  • field.

要擺脫的三件重要事情是:

  1. Kotlin 中的注釋在最終應用位置方面存在一定程度的歧義1 。例如,將注釋放置在您所做的位置意味著可以將注釋應用于至少五個不同位置之一:屬性、字段、getter、setter、setter 參數。

  2. 應用于 Kotlin 屬性的注解在 Java 端是不可見的。

  3. 如果 Kotlin 屬性上的注解沒有 use-site 目標,則僅當它不適用于 Kotlin 屬性時才會應用于支持字段。

您的注釋在其注釋中同時包含AnnotationTarget.FIELD和。由于您沒有指定 use-site 目標,因此該屬性優(yōu)先——這意味著注釋對 Java 不可見。AnnotationTarget.PROPERTY@Target


查看完整回答
反對 回復 2023-06-14
  • 1 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號