- ベストアンサー
配列のNullPointerException
String[]; s.length; これをコンパイルするとコンパイルエラーになりますが、なぜNullPointerExceptionではないのですか? 通常オブジェクトが生成されていないものに対し、メソッド、フィールドの呼び出しを行うとNullPointerExceptionになるはずなのですが…。 配列のlengthがメソッドでもフィールドでもないという事は聞いたことがありますが、これはいったい何なのですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> なぜNullPointerExceptionではないのですか? を、次のどちらの意味で使ってますか? (1) このプログラムは コンパイル時に「NullPointerException」というエラーになるはず。 ところで、NullPointerException ではなく別のエラーになってしまう (2) このプログラムは正常にコンパイルできて、実行時に「NullPointerException」が発生するはず。 ところが、コンパイル自体がエラーでできない。 (1) の場合 NullPointerException は 実行時に発生する例外です。 コンパイル時には発生しません。 // コンパイラのバグ等で、異常事態が発生して.. という可能性は0ではありませんが、そんな特殊な例は無視していいです。 (2)の場合 この例では、文法間違いがあり、正常にコンパイルできません。 それが理解できないのなら、Javaの文法を基礎から勉強しましょう。
その他の回答 (3)
- teketon
- ベストアンサー率65% (141/215)
そもそも。変数の宣言がない。初期化がなされていない。 それらを満たした上でなら、NullPointerExceptionになります。
- Tacosan
- ベストアンサー率23% (3656/15482)
コンパイラにバグがない限り, NullPointerException が「コンパイルエラー」で出ることはそもそもあり得ないんじゃないかなぁ....
- wormhole
- ベストアンサー率28% (1626/5665)
>これをコンパイルするとコンパイルエラーになりますが、なぜNullPointerExceptionではないのですか? その理由はエラーメッセージとして書かれているはずですけど、 エラーメッセージは読まれていますか? >String[]; これ、何をさせようとしてるのか説明お願いします。