gpt4 book ai didi

空检查构造函数参数的Groovy方式

转载 作者:行者123 更新时间:2023-12-03 18:44:18 26 4
gpt4 key购买 nike

我想将非空值注入(inject)我的 groovy 类

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

或者
this.foo = Objects.requireNonNull foo
this.bar = Objects.requireNonNull bar

最佳答案

如果您使用 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")

当您添加 @NullCheck在类定义级别,防御性空检查将应用于所有构造函数和方法。或者,您可以添加 @NullCheck注释到您只想使用此空检查的方法(或构造函数)。

在 Groovy 3 之前,这种防御性检查必须手动实现。

关于空检查构造函数参数的Groovy方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60261037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com