split
可能返回空String[]
?我很好奇,因为我想尽可能在代码中尽可能防御,而不必进行不必要的检查。代码如下:是否有可能Java String.split可以返回空字符串[]
String[] parts = myString.split("\\w");
,我需要之前,我使用parts
拆分后进行空检查?
split
可能返回空String[]
?我很好奇,因为我想尽可能在代码中尽可能防御,而不必进行不必要的检查。代码如下:是否有可能Java String.split可以返回空字符串[]
String[] parts = myString.split("\\w");
,我需要之前,我使用parts
拆分后进行空检查?
它从不返回空值。如果你不确定,你应该总是检查方法的javadoc。例如String#split(String)
说
此方法的工作方式类似于调用两个参数
split
方法
...和String#split(String,int)
说:
如果表达式不匹配任何部分的输入,那么结果数组只有一个元素,即这个字符串。
从Javadoc中,您还可以找出哪些异常会发生,更重要的是为什么会抛出这些异常。另外一个非常重要的事情是检查类是否是线程安全的。
不,您不需要检查零件上的零位。
拆分方法调用Patter.split方法,做到这一点的方法的开头:
ArrayList<String> matchList = new ArrayList<String>();
,并在年底做matchList.toArray()返回一个数组。
所以不需要测试空值。
永远不要依靠看执行。实施可以改变。文档是您正在处理的合同。 –
True ..但是这个方法的实现不太可能改变,或者整个Java世界谁使用这个方法没有null检查将陷入混乱。 –
在这种情况下,从文档中可以明显地看出,如果它发生变化,它不能返回'null'。 –
我没有检查javadoc,返回null!=抛出NPE。我看到了可能抛出的PatternException。 – Woot4Moo
'split(String regex)'的Javadoc不表示不能返回null。 – Paul
@Paul:不,但是如果可以返回null,它(或者'Pattern#split'文档)会这样说。而单参数说它调用的双参数版本说*“如果表达式不匹配输入的任何部分,那么结果数组只有一个元素,即这个字符串。”* –