2011-08-01 76 views

回答

44

它从不返回空值。如果你不确定,你应该总是检查方法的javadoc。例如String#split(String)

此方法的工作方式类似于调用两个参数split方法

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

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

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

+0

我没有检查javadoc,返回null!=抛出NPE。我看到了可能抛出的PatternException。 – Woot4Moo

+4

'split(String regex)'的Javadoc不表示不能返回null。 – Paul

+2

@Paul:不,但是如果可以返回null,它(或者'Pattern#split'文档)会这样说。而单参数说它调用的双参数版本说*“如果表达式不匹配输入的任何部分,那么结果数组只有一个元素,即这个字符串。”* –

1

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

1

拆分方法调用Patter.split方法,做到这一点的方法的开头:

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

,并在年底做matchList.toArray()返回一个数组。

所以不需要测试空值。

+6

永远不要依靠看执行。实施可以改变。文档是您正在处理的合同。 –

+1

True ..但是这个方法的实现不太可能改变,或者整个Java世界谁使用这个方法没有null检查将陷入混乱。 –

+1

在这种情况下,从文档中可以明显地看出,如果它发生变化,它不能返回'null'。 –

6

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

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

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

+0

见T.J.克罗德的评论在别处。 – EJP

相关问题