45

是否可以split返回 null String[]?我很好奇,因为我想尝试在我的代码中尽可能地进行防御,而无需进行不必要的检查。代码如下:

String[] parts = myString.split("\\w");  

parts在使用后拆分之前是否需要执行空检查?

4

4 回答 4

56

它从不返回 null。如果您不确定,您应该始终检查该方法的 javadoc。例如String#split(String)

此方法的工作方式就像调用双参数split方法一样

...并String#split(String,int)说:

如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即这个字符串。

从 Javadoc 中,您还可以了解会发生什么样的异常,更重要的是为什么会抛出这些异常。另外要检查的一件非常重要的事情是这些类是否是线程安全的。

于 2011-08-01T17:31:28.663 回答
7

我建议您在 API 不清楚的时候下载 Java 源代码。这里的所有答案都只是告诉你答案,但你应该亲自看看。您可以从此处下载 Java 源代码(查看页面底部附近)。

通过遵循源代码,您最终将获得String[] Pattern.split(CharSequence input, int limit). 返回值来自被调用的非空ArrayList值。不返回 null:如果列表为空,您将返回一个空数组。toArraytoArray

所以最后,不,你不必检查空值。

于 2011-08-01T17:44:05.073 回答
2

不,您不需要检查零件上的空值。

于 2011-08-01T17:27:42.647 回答
1

Split 方法调用 Patter.split 方法,该方法在方法的开头执行此操作:

ArrayList<String> matchList = new ArrayList<String>();

最后执行 matchList.toArray() 返回一个数组。

所以不需要测试空值。

于 2011-08-01T17:30:44.650 回答