【问题标题】:What does @get:NotNull mean in Kotlin?@get:NotNull 在 Kotlin 中是什么意思?
【发布时间】:2020-09-22 03:10:00
【问题描述】:

我阅读了khipster 生成的代码,在一个数据类中我发现了这样的片段:

import javax.validation.constraints.NotNull

data class MyDTO(
    var id: Long? = null,
    @get: NotNull
    var name: String? = null,

@get:NotNull注解是什么意思?据我了解@get 意味着我要注释name 属性的getter,而NotNull 是一个验证注释,这意味着该事物不能设置为null。但两者如何协同工作?用注解来注解 getter 没有任何意义,这意味着 this 不能设置为 null,因为不能设置 getter。在 setter 上使用 NotNull 注释会更有意义。

【问题讨论】:

    标签: validation kotlin


    【解决方案1】:

    @NotNull 在方法上意味着它不能返回 null。因此,特别是用它来注释 setter 是没有意义的;注释设置器的参数。

    【讨论】:

      【解决方案2】:

      如果您使用 IntelliJ 的反编译功能(请查看this 答案)

      Kotlin 代码:

      @get: NotNull
      var uid: String? = null
      

      反编译代码:

      import javax.validation.constraints.NotNull;
      import org.jetbrains.annotations.Nullable;
      
      @Nullable
      private String uid;
      
      @NotNull
      @Nullable
      public final String getUid() {
         return this.uid;
      }
      
      public final void setUid(@Nullable String var1) {
         this.uid = var1;
      }
      

      @get:NotNull 注解是什么意思?

      快速回答:请把@NotNull注解放在getter函数的顶部

      !!请注意,还有 @Nullable 注释添加到 getter 函数,因为“?”在变量定义的最后 正如您从导入中注意到的那样,它是由 IntelliJ 添加的

      详细回答:我可以将您重定向到“使用站点目标声明”

      最后,我想表达一下我的经验,我在uid 字段上同时有@Nullable@NotNull 注释(你可以在反编译代码上看到),我可以将该字段设置为null

      【讨论】:

        猜你喜欢
        • 2017-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-02
        • 2020-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多