StringTokenizer.nextToken が null を返す場合はありますか? コードで NullPointerException をデバッグしようとしていますが、これまでに見つかった唯一の可能性は、nextToken() から返された文字列が null を返したことです。その可能性はありますか?Java doc には何も見つかりませんでした。
ありがとう
StringTokenizer.nextToken が null を返す場合はありますか? コードで NullPointerException をデバッグしようとしていますが、これまでに見つかった唯一の可能性は、nextToken() から返された文字列が null を返したことです。その可能性はありますか?Java doc には何も見つかりませんでした。
ありがとう
nextToken() は、トークナイザーの文字列にそれ以上トークンがない場合、NoSuchElementException をスローします。したがって、null を返さないと言えます。
http://download.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html#nextToken ()
NullPointerException をスローできると思います。
nextToken() のコードを調べると、
public String nextToken() {
/*
* If next position already computed in hasMoreElements() and
* delimiters have changed between the computation and this invocation,
* then use the computed value.
*/
currentPosition = (newPosition >= 0 && !delimsChanged) ?
newPosition : skipDelimiters(currentPosition);
/* Reset these anyway */
delimsChanged = false;
newPosition = -1;
if (currentPosition >= maxPosition)
throw new NoSuchElementException();
int start = currentPosition;
currentPosition = scanToken(currentPosition);
return str.substring(start, currentPosition);
}
ここで、skipDelimiters() メソッドを呼び出すと、NullPointerException がスローされる可能性があります。
private int skipDelimiters(int startPos) {
if (delimiters == null)
throw new NullPointerException();
int position = startPos;
while (!retDelims && position < maxPosition) {
if (!hasSurrogates) {
char c = str.charAt(position);
if ((c > maxDelimCodePoint) || (delimiters.indexOf(c) < 0))
break;
position++;
} else {
int c = str.codePointAt(position);
if ((c > maxDelimCodePoint) || !isDelimiter(c)) {
break;
}
position += Character.charCount(c);
}
}
return position;
}