我想将非空值注入到我的 groovy 类中
class MyClass {
private final String foo
private final Integer bar
MyClass(String foo, Integer bar) {
// wanted ctr body
}
...
}
Run Code Online (Sandbox Code Playgroud)
在构造函数中,我想将参数分配给相应的字段并防止空值。
我想知道是否有一种比相当冗长的方式来做这件事
assert foo != null
assert bar != null
this.foo = foo
this.bar = bar
Run Code Online (Sandbox Code Playgroud)
或者
this.foo = Objects.requireNonNull foo
this.bar = Objects.requireNonNull bar
Run Code Online (Sandbox Code Playgroud)
如果您使用 Groovy 3,您可以使用@NullCheck添加防御条件构造函数(或任何方法)参数的注释。
import groovy.transform.NullCheck
@NullCheck
class MyClass {
private final String foo
private final Integer bar
MyClass(String foo, Integer bar) {
this.foo = foo
this.bar = bar
}
}
// Examples:
new MyClass("test", null) // throws IllegalArgumentException("bar cannot be null")
new MyClass(null, "test") // throws IllegalArgumentException("foo cannot be null")
Run Code Online (Sandbox Code Playgroud)
当您@NullCheck在类定义级别添加时,防御性空检查将应用于所有构造函数和方法。或者,您可以向@NullCheck仅要使用此空检查的方法(或构造函数)添加注释。
在 Groovy 3 之前,必须手动实施此类防御性检查。
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |