Java String.split是否有可能返回一个空的String

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

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

我需要执行空检查之前,我使用parts后分裂?

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

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

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

如果expression式不匹配input的任何部分,那么结果数组只有一个元素,即这个string。

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

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

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

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

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

拆分方法调用Patter.split方法,在方法的开始执行此操作:

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

并在最后做matchList.toArray()返回一个数组。

所以不需要testing空值。

Interesting Posts