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("/")
与其说这是一个问题,不如说这是一个谜语,因为我已经知道答案了,但我想也许其他一些开发者可能会喜欢这个:-)
想象一下,您需要将如下字符串分开:
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("/")