gpt4 book ai didi

groovy - 在groovy中连接字符串时如何摆脱 "null"?

转载 作者:行者123 更新时间:2023-12-04 02:56:38 34 4
gpt4 key购买 nike

我有一个类

class A{
String name
String address
}

def a = new A()
a.address = "some address"
println "${a.name} ${a.address}" => "null some address"

这里 a.name为空,因此打印的字符串将包含“空”,但我希望结果是 "some address"忽略空值。

我知道我可以使用 println "${a.name ?: ''} ${a.address ?: ''}"打印时,有没有更简单的解决方案?

最佳答案

您可以重新定义 toString Groovy 的方法 null对象返回空字符串而不是 null .

def a = [a:null, b:'foobar']
println "${a.a} ${a.b}"
org.codehaus.groovy.runtime.NullObject.metaClass.toString = {return ''}
println "${a.a} ${a.b}"

这将打印:
null foobar
foobar

如果只想重新定义 toString暂时,在您的最后一个 print... 之后添加以下内容把它改回来:
org.codehaus.groovy.runtime.NullObject.metaClass.toString = {return 'null'}

您也可以更改 nulltoString使用 Groovy 的行为 Category [1] [2] .例如:
@Category(org.codehaus.groovy.runtime.NullObject) class MyNullObjectCategory {def toString() {''}}
use (MyNullObjectCategory) {
println "${a.a} ${a.b}"
}

关于groovy - 在groovy中连接字符串时如何摆脱 "null"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10517817/

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