JavaのヒントとJavaアプリケーションでのnullponintexceptionを回避する最良の方法
Javaアプリケーションでは、nullponintexception(null pointer例外)が最良のソリューション(問題)です。同時に、ヌルポインターは、堅牢でスムーズな実行コードを作成するための鍵でもあります。 「予防は治療よりも優れている」というフレーズは、不快なnullponintexceptionにも適用されます。防御的なコーディング手法を適用し、複数の部品間で慣習をフォローすることにより、nullpointexceptionを大幅に回避できます。次のJavaのヒントは画像を最小限に抑えることができます! =この種のチェック用のnullコード。経験豊富なJavaプログラマーとして、これらのテクノロジーの一部が一部のプロジェクトで使用されていることに気付くかもしれません。しかし、1年生の大学生と中級開発者にとって、これは素晴らしい学習の機会です。
これらは、学習しやすいいくつかの簡単な手法ですが、コードの品質と堅牢性にとって本当に重要です。私の経験では、最初のトリックだけがコードの品質を向上させる上で大きな役割を果たしました。
1)不明なオブジェクトの代わりに既存の文字列(文字列)にequal()およびEqualsingNoreCase()を呼び出す
通常、equals()は既に空でない文字列で呼び出されます。 equal()メソッドは対称であるため、a.equal()を呼び出すことはB. equal()を呼び出すことに相当します。これが、多くの人がオブジェクトAとBに注意を払う理由です。
Object loncoldobject = null; //間違った方法-nullpointerexceptionif(unknownobject.equals( "nownobject")){system.err.println( "これにより、nullpointerexceptionがnull") system.err.println( "より良いコーディングnullpointerexception");}これは、nullpointexceptionを回避するための最も重要なJavaトリックですが、equal()は非常に一般的な方法であるため、結果は大幅に改善されます。
2)両方が同じ結果を返す場合、toString()の代わりにvalueof()が推奨されます
空のオブジェクトは、toString()を呼び出すときにnullpointExceptionをスローするためです。 Value()を呼び出すことで同じ値を取得できる場合は、valueof()を使用する必要があります。これにより、ヌル値が渡されます。特に、整数、フロート、ダブル、ビッグデシムラなどの包装クラスの場合。
bigdecimal bd = getPrice(); system.out.println(string.valueof(bd)); // npesystem.out.println(bd.toString())をスローしません。 //「スレッド」の「例外」メイン "java.lang.nullpointerexception"をスローする
使用しているオブジェクトが空であるかどうかわからない場合は、このJavaトリックを使用してください
3)nullセーフメソッドまたはクラスライブラリを使用します
現在、nullをチェックしているオープンソースコンポーネントがたくさんあります。最も一般的なものの1つは、ApacheのStringutilsです。 stringutils.isblank()、isnumberic()、iswhitespace()、およびその他のツールをnullpointexceptionメソッドを心配することなく使用できます。
System.out.println(stringutils.isempty(null)); system.out.println(stringutils.isblank(null)); system.out.println(stringutils.isnumeric(null)); system.out.println(stringutils.isalluppercase(null));
ただし、結論を出す前に、nullセキュリティ方法とクラスに関するドキュメントを読むことを忘れないでください。これはもう1つの最高のJavaドリルであり、多くの努力をする必要はありませんが、多くの進歩を遂げます。
4)メソッドからnullを返す代わりに、空のコレクションや空の配列を返すことは避けてください
このJava技術は、Joshua Blochの「効果的なJava」でも言及されています。この本は、Javaコーディング機能を改善するためのソースでもあります。空のコレクションまたは空の配列を返すことにより、size()やlength()などの基本呼び出しがnullpointexceptionをスローしないことを判断できます。コレクションクラスは、便利な空のリスト、セット、マップを提供できます(これら)はcollections.empty_list、collections.empty_set、およびcollectionsempty_mapを使用しており、これらを使用できます(静的変数)。
コードは次のとおりです。
public List getOrders(顧客顧客){リストresult = collections.empty_list;返品結果; }同様に、nullを返す代わりに、collections.empty_list、collections.empty_set、およびcollectionsempty_mapを使用できます。
5)@notnullおよび@nullableにコメントします
書くときは、コンベンションの無効性を定義できます。@notnullや@nullableなどのコメントを使用して、この方法がnull安全であるかどうかを促す必要があります。モダンなコンパイラ、IDE、その他のツールは、このコメントを読んで、空のチェックを行うのに役立つか、空のチェックが必要かどうかを伝えることができます。 IntellijideとFindBugsはすでにこの注釈をサポートしています。これらのコメントはJSR 305の一部でもあります(翻訳者の注:Javaの標準として理解できます)。 @notnullと@nullableを見ることで、プログラマーは空のチェックを行うかどうかを決定できます。ちなみに、これはJavaプログラマーにとっての新しいベストプラクティスですが、適応するのに少し時間がかかります。
6)規則に従い、合理的なデフォルト値を定義します
Javaフィールドでは、ヌルポインターを避けるための最良の方法の1つは、合意し、それらを順守することです。ほとんどのnullpointExceptionsは、不完全な情報を使用しているか、オブジェクトを作成するためにすべての依存関係が提供されないために発生します。不完全なオブジェクトの作成を許可せず、そのような要件を無効にする場合は、しばらくすると多くのnullpointexceptionsを防ぐことができます。オブジェクトの作成が許可されている場合は、妥当なデフォルト値を設定する必要があります。たとえば、従業員オブジェクトはIDと名前属性なしでは作成できませんが、オプションのPGHONE番号を持つことができます。従業員に電話番号がない場合は、null値を返す代わりに0を返します。しかし、この種の処理は、違法な入力をチェックするのではなく、null値のチェックを非常に慎重に処理する必要があります。また、ヌル値を定義するかどうかにも注意してください。通話人に、情報に基づいた決定を下すように思い出させることに注意してください。故障後にヌル値を選択または受け入れることは、注意する必要がある重要な設計でもあります。
7)データベースを使用してドメインオブジェクト(Demainオブジェクト)を保存する場合
たとえば、顧客、注文など、データベース内のnull値に関するいくつかの制約を定義する必要があります。データベースには複数のソースからのデータが必要になる可能性があるため、データベース内のnull値をチェックすると、データの整合性が確保されます。データベース内のnull値の制約を維持すると、Javaでのヌルチェックを減らすこともできます。データベースからオブジェクトを取得すると、それらのプロパティが空になり、それらのプロパティが空にならないことを確認できます。これにより、これらの空のチェックのコードが最小限に抑えられます。
8)空のオブジェクトモードを使用します
これは、Javaのnullpointexceptionを避ける別の方法です。メソッドがオブジェクトを返す場合、発信者はオブジェクトを繰り返したいと考えています。発信者は、collection.iterator()と同様の方法を使用してイテレーターを返します。発信者が上記の方法のいずれかを持っていない場合、nullの代わりに空のオブジェクトが返される可能性があります。空のオブジェクトは、異なるコンテキストで異なる意味を持つ特別なオブジェクトです。これらのようなメソッドが対照的な型または接続タイプを返す場合、空のオブジェクト(空のオブジェクト)を空にする代わりに使用する必要があります。