split
はNULLを返すことは可能ですかString[]
?私は不必要な点検をしなくても、私のコードでできるだけ防御的であるようにしたいと思っています。コードは以下の通りである:私はparts
ポスト分割を使用する前にJava String.splitがnullを返す可能性はありますかString []
String[] parts = myString.split("\\w");
は、私がnullのチェックを実行する必要がありますか?
split
はNULLを返すことは可能ですかString[]
?私は不必要な点検をしなくても、私のコードでできるだけ防御的であるようにしたいと思っています。コードは以下の通りである:私はparts
ポスト分割を使用する前にJava String.splitがnullを返す可能性はありますかString []
String[] parts = myString.split("\\w");
は、私がnullのチェックを実行する必要がありますか?
nullを返すことはありません。わからない場合は、常にメソッドのjavadocをチェックする必要があります。
式はどの部分と一致しない場合:たとえば
String#split(String)
はこの方法は、2つの引数
split
方法を呼び出すことであるかのように動作します...と
String#split(String,int)
は言う言います結果の配列にはただ1つの要素、つまりこの文字列があります。
Javadocから、どのような例外が発生する可能性がありますか、さらに重要なのはなぜ例外がスローされたのかを知ることができます。また、クラスがスレッドセーフであるかどうかをチェックすることも非常に重要です。
いいえ、部品のヌルを確認する必要はありません。
分割方法は、方法の初めにこれを行いPatter.splitメソッドを呼び出します:
ArrayList<String> matchList = new ArrayList<String>();
そして最後に配列を返すように()matchList.toArrayを行います。
したがって、ヌルをテストする必要はありません。
実装を参照することは決して頼りません。実装は変更可能です。ドキュメンテーションはあなたが取り組んでいる契約です。 –
真ですが、このメソッドの実装は変更される可能性は低いですし、nullチェックなしでこのメソッドを使用したJavaの世界全体が混乱することになります。 –
このケースでは、ドキュメントから明らかなように、変更された場合は 'null 'を返してはいけません。 –
APIが不明な場合は、Javaソースコードをダウンロードすることをおすすめします。ここでのすべての答えはあなたに答えを教えてくれるが、本当にあなた自身のために見るべきである。 Javaソースコードはhereからダウンロードできます(ページの一番下を見てください)。
ソースコードに続いて、String[] Pattern.split(CharSequence input, int limit)
になります。戻り値はArrayList
で、toArray
が呼び出されます。 toArray
はnullを返しません。空のリストの場合、空の配列を返します。
最後に、いいえ、nullを確認する必要はありません。
T.J.クラウダーのコメントはどこかにある。 – EJP
私はnullを返すjavadocをチェックしました!= NPEを投げます。私はそれが投げることができるPatternExceptionを見た。 – Woot4Moo
'split(String regex)'のJavadocは、nullを返すことができないことを示していません。 – Paul
@Paul:いいえ、 'null 'を返すことができれば、それ(または' Pattern#split' docs)はそうそうです。そして、引数が1つである2引数のバージョンでは、「式が入力のどの部分とも一致しない場合、結果の配列にはただ1つの要素、つまりこの文字列しかありません」と記載されています。* –