Java String.split是否可以返回null String []

时间:2011-08-01 17:26:28

标签: java string defensive-programming

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

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

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

4 个答案:

答案 0 :(得分:51)

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

  

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

一样

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

  

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

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

答案 1 :(得分:7)

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

按照源代码,您最终会在String[] Pattern.split(CharSequence input, int limit)。返回值来自调用ArrayList的非空toArraytoArray不返回null:如果列表为空,则会返回一个空数组。

所以最后,不,你不必检查null。

答案 2 :(得分:1)

不,您不需要检查部件是否为空。

答案 3 :(得分:1)

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

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

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

所以不需要测试空值。