Groovy空检查构造函数参数的方法
我想将非空值注入groovy类Groovy空检查构造函数参数的方法,groovy,Groovy,我想将非空值注入groovy类 class MyClass { private final String foo private final Integer bar MyClass(String foo, Integer bar) { // wanted ctr body } ... } 在构造函数中,我希望将参数分配给相应的字段并防止空值 我想知道是否有一种比非常冗长的 assert foo != null assert bar !=
class MyClass {
private final String foo
private final Integer bar
MyClass(String foo, Integer bar) {
// wanted ctr body
}
...
}
在构造函数中,我希望将参数分配给相应的字段并防止空值
我想知道是否有一种比非常冗长的
assert foo != null
assert bar != null
this.foo = foo
this.bar = bar
或
如果使用Groovy 3,则可以使用添加防御条件构造函数(或任何方法)参数的注释
导入groovy.transform.NullCheck
@空支票
类MyClass{
私人最终字符串foo
专用最终整型条
MyClass(字符串foo、整型条){
this.foo=foo
this.bar=bar
}
}
//示例:
新建MyClass(“test”,null)//抛出IllegalArgumentException(“bar不能为null”)
新建MyClass(null,“test”)//抛出IllegalArgumentException(“foo不能为null”)
当您在类定义级别添加@NullCheck
时,防御性的null检查将应用于所有构造函数和方法。或者,您可以将@NullCheck
注释添加到只希望使用此空检查的方法(或构造函数)中
在Groovy 3之前,这种防御检查必须手动执行。这只是一个重要的细微差别,因为@NullCheck注释只适用于显式的方法和构造函数,正如官方文档中所指出的那样 如果放置在类级别,将检查所有显式方法和构造函数 如果将其他注释用作@TupleConstructor,则所有隐式方法和构造函数都不会检查参数是否不为null
this.foo = Objects.requireNonNull foo
this.bar = Objects.requireNonNull bar