我读取了 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 没有任何意义,这意味着这不能设置为 null,因为无法设置 getter。在 setter 上使用NotNull
注释会更有意义。
方法上的@NotNull
意味着它不能返回null
。因此,特别是用它注释二传手是没有意义的;注释资源库的参数可以。
如果你使用IntelliJ的反编译功能(请检查这个答案)
Kotlin Code:
@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函数的顶部
!!请注意,由于变量定义末尾的"?",还向getter函数添加了@Nullable
注释 正如您从导入中注意到的那样,它是由IntelliJ添加
的作为详细答案:我可以将您重定向到"使用站点目标声明">
- 比尔东
- 博客文章
最后,我想表达一下我的经验,我在uid
字段上有@Nullable
和@NotNull
注释(您可以在反编译代码上看到),我可以将该字段设置为null