web-dev-qa-db-ja.com

Java String.splitはnull String []を返すことができますか?

splitがnull String[]を返すことは可能ですか?私は不必要なチェックをせずにコード内で可能な限り防御的になりたいと思っているので興味があります。コードは次のとおりです。

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

parts post post splittingを使用する前にnullチェックを実行する必要がありますか?

38
Woot4Moo

Nullを返すことはありません。不明な場合は、常にメソッドのjavadocを確認する必要があります。たとえば、 String#split(String)

このメソッドは、2つの引数を持つsplitメソッドを呼び出すように機能します

...そして String#split(String,int) はこう言います:

式が入力のどの部分とも一致しない場合、結果の配列には要素が1つだけ、つまりこの文字列が含まれます。

Javadocから、どのような種類の例外が発生する可能性があるか、さらに重要なのはなぜそれらの例外がスローされたかを調べることもできます。また、チェックすべき非常に重要なことの1つは、クラスがスレッドセーフかどうかです。

50
palto

APIが不明確な場合は、Javaソースコードをダウンロードすることをお勧めします。ここでのすべての答えは答えを伝えるだけですが、実際に自分で確認する必要があります。Java here からのソースコード(ページの下部を見てください)。

ソースコードに従うと、String[] Pattern.split(CharSequence input, int limit)になります。戻り値は、ArrayListが呼び出されるnull以外のtoArrayから取得されます。 toArrayはnullを返しません。空のリストの場合、空の配列が返されます。

そのため、最終的には、いいえ、nullをチェックする必要はありません。

6
Paul

Splitメソッドは、メソッドの最初でこれを行うPatter.splitメソッドを呼び出します。

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

最後にmatchList.toArray()を実行して配列を返します。

したがって、nullをテストする必要はありません。

1
Varun Achar