split
是否可以返回空String[]
?我很好奇,因为我想在我的代码中尽可能地保持防御,而不需要进行不必要的检查。代码如下:
String[] parts = myString.split("\\w");
在使用parts
后拆分之前,是否需要执行空检查?
答案 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
的非空toArray
。 toArray
不返回null:如果列表为空,则会返回一个空数组。
所以最后,不,你不必检查null。
答案 2 :(得分:1)
不,您不需要检查部件是否为空。
答案 3 :(得分:1)
Split方法调用Patter.split方法,该方法在方法的开头执行此操作:
ArrayList<String> matchList = new ArrayList<String>();
最后,matchList.toArray()返回一个数组。
所以不需要测试空值。