Groovy 空指针之谜 :-)

Groovy Null-Pointer Riddle :-)

与其说这是一个问题,不如说这是一个谜语,因为我已经知道答案了,但我想也许其他一些开发者可能会喜欢这个:-)

想象一下,您需要将如下字符串分开:

def line = "path /some/path/to/somewhere/test.txt"

并且您只想获取文件名。不知何故,你从这样的代码开始:

println line-"path "
==> /some/path/to/somewhere/test.txt

效果很好 - 让我们拆分剩余部分:

println (line-"path ").split("/")

但现在你得到了

java.lang.NullPointerException: Cannot invoke method split() on null object

你以前见过 line-"path " 不为空,所以你再试一次

def temp = line-"path "
println temp.split("/")
==> [, some, path, to, somewhere, test.txt]

有效!怎么回事?

你能避免temp-变量并把上面的语句写成一行吗?

println((line-"path ").split("/"))。否则,您将尝试拆分 println 的结果,即 nil。

对我很有用。没有空指针异常:

def line = "path /some/path/to/somewhere/test.txt"
def temp = line-"path "
println temp.split("/")

你的单线是:

println ((line-"path ").split("/"))line.split(" ")[1].split("/")​​​