にこのJava 1.8.0_102プログラムをスロー。なぜこの特定の例外がスローされているのか?ジャワFile.createTempFile()はNullPointerExceptionが
答えて
プレフィックスはJavaDoc
パラメータに応じてnullにすることはできません。
プリフィックス - ファイル名を生成するために使用される接頭辞文字列。少なくとも3文字以上である必要があります。
接尾辞 - ファイル名の生成に使用される接尾文字列です。接尾その場合には、nullの場合も、「の.tmp」が
私は1.8.0_20のJavadocを読んでいましたが、1.8.0_102のJavadocは読んでいませんでした。私は別のバージョンを使用してコンパイルしている間にJavaの1つのバージョンに対してJavadocを使用しないことを知っていますが、同じバージョンの異なるリリースでこの問題が発生したことはありません。 – mbmast
@mbmast Javaはパブリックメソッドの契約をあるバージョンから次のバージョンに変更しません。オブジェクト指向設計の基本原則に違反することになります。私はあなたが[File.createTempFile](https://docs.oracle.com/javase/8/docs/api/java/io/File.html#createTempFile-java.lang.String-java.lang.String)を混乱させたと思う - )(java.io内)と[Files.createTempFile](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createTempFile-java.lang.String -java.lang.String-java.nio.file.attribute.FileAttribute ...-)(java.nio.file内)。 – VGR
あなたは正しいです。 SOは恥のためにバッジを授与していますか? – mbmast
を使用されるJavaのドキュメントは、 『;少なくとも3つの文字でなければならないファイル名を生成するために使用されるプレフィックス文字列を接頭辞』と言います。なぜそれがnullポインタ例外をスローしているのか。ここにリンクがありますFile java doc
エラー出力によると、例外はNullPointerExceptionです。しかし、File.createTempFileのJavadocによると、例外はスローされません。つまり、あなたのコードで予期せぬことが起こっていることを意味します。 source codeを見ると、何が起こっているのかを正確に見ることができます(オーバーロードされたバージョンを使用したため、directory
はnullです)。
最初に行うことは、長さがprefix
で、3以上であることを確認することです(2000行目)。ただし、prefix
の値がnull
であるため、ヌルオブジェクトに対してメソッドを呼び出すことができないため、length()
をチェックすると常にNullPointerExceptionが返されます。 InvalidArgumentExceptionをスローすることさえできなかったという事実は、それがif-checkで死んだという証拠です。また、Javadocとソースコードの両方で、prefix
が3文字の文字列であることが必要であることもわかります。興味深いことに、Java 6では、このメソッドはprefix
がnullの場合には、がNullPointerExceptionを明示的にスローしました。
- 1. ジャワSlick2Dラインコンストラクタは、Java Slick2DでNullPointerExceptionが
- 2. ジャワ
- 3. ジャワ
- 4. ジャワ
- 5. /ジャワ
- 6. ジャワ -
- 7. は、HashMapのジャワ
- 8. ジャワ、春は、Hibernateは
- 9. ジャワ、メモリ
- 10. ジャワ、瓶
- 11. 私はNullPointerExceptionが
- 12. ジャワ・ボックスとラムダ
- 13. ジャワnewSingleThreadExecutorガベージコレクション
- 14. ジャワ、日付
- 15. ジャワ、数字
- 16. カフカ - ジャワ - crashs
- 17. スパーク - ジャワ - foreachPartition
- 18. ジャワ - 工場、インスタンス
- 19. 文字シフト[ジャワ]
- 20. ジャワguessingGameエラー
- 21. ジャワaddShutdownHook方法
- 22. ジャワ - 日時
- 23. ジャワ - コマンドでアプレットビューアプロンプト
- 24. ストリング(アンドロイド/ジャワ)
- 25. GridlandメトロHackerrankジャワ
- 26. ジャワ長いリテラル
- 27. のStringBuilderはNullPointerExceptionが
- 28. のOutOfMemoryError(ジャワ):Javaヒープスペース
- 29. グラフィックス・スタッター・イン・ジャワ(スペースインベーダー)
- 30. ジャワ - のcompareToとオペレータ
"Javadocsによると、両方の引数がnullになる可能性があります*"ドキュメントの断片を引用できますか?私が見ているもの(https://docs.oracle.com/javase/8/docs/api/java/io/File.html#createTempFile-java.lang.String-java.lang.String-)から " **接頭辞**ファイル名の生成に使用する文字列; **は少なくとも3文字以上の長さでなければなりません** "(emphasis mine) – Pshemo
受け入れられた答えの下に私のコメントを参照してください。 – mbmast