Java -Tipps und der beste Weg, um NullponIntexception in der Java -Anwendung zu vermeiden
In einer Java -Anwendung ist eine Nullponinterexception (Null -Zeiger -Ausnahme) die beste Lösung (Problem). Gleichzeitig ist ein Nullzeiger auch der Schlüssel zum Schreiben von robustem und reibungslosen laufenden Code. Der Ausdruck „Prävention ist besser als die Behandlung“ gilt auch für die unangenehme Nullponinterexception. Durch die Anwendung von defensiven Codierungstechniken und den Konventionen zwischen mehreren Teilen können Sie nullpointException in hohem Maße vermeiden. Die folgenden Java -Tipps können Bilder minimieren! = Nullcode für diese Art von Scheck. Als erfahrener Java -Programmierer können Sie erkennen, dass einige dieser Technologien in einigen Projekten verwendet werden. Für Studenten und Intermediate-Entwickler im ersten Jahr ist dies jedoch eine großartige Lernmöglichkeit.
Dies sind einige einfache Techniken, die leicht zu erlernen sind, aber sie sind wirklich wichtig für die Codequalität und Robustheit. Nach meiner Erfahrung hat nur der erste Trick eine große Rolle bei der Verbesserung der Codequalität gespielt.
1) Rufen Sie Equal () und EqualsingnoreCase () in der vorhandenen Zeichenfolge (Zeichenfolge) anstelle von unbekannten Objekten auf
Normalerweise wird Equals () bereits auf die nicht leere Zeichenfolge aufgerufen. Da die Equal () -Methode symmetrisch ist, entspricht das Aufrufen von A.Equal () dem Aufruf von B.Equal (), und deshalb achten viele auf die Objekte A und B, wenn eine Seite des leeren einen Nullzeiger verursacht.
Object UNBUKEDOBJECT = NULL; // Falsches Weg - kann nullpointerexceptionif (unbekannteObject.equals ("bekanntObject") {System.err.println ("Dies kann zu einer Nullpointerexception führen, wenn UnbekanntesObject null null ist");} // Right Way - Nullpointerexception Auch Unbekanntheit. System.err.println ("Besseres Codieren vermieden NullPointerexception");}Dies ist der wichtigste Java -Trick, um NullpointException zu vermeiden, aber das Ergebnis wird eine enorme Verbesserung sein, da gleich () eine sehr häufige Methode ist.
2) Wenn beide dasselbe Ergebnis zurückgeben, wird ValueOf () anstelle von ToString () bevorzugt ()
Weil ein leeres Objekt beim Aufrufen von toString () eine NullpointException wirft. Wenn wir den gleichen Wert erhalten, indem wir Value () aufrufen, sollten wir ValueOF () verwenden. Dies wird einen Nullwert verbringen. Besonders bei Verpackungsklassen wie Integer, Float, Double oder BigDecimla.
BigDecimal bd = getPrice (); System.out.println (String.ValueOf (Bd)); // Wirft npesystem.out.println (bd.tostring ()) nicht. // wirft "Ausnahme in Thread" Main "java.lang.nullpointerexception" aus "
Wenn Sie nicht sicher sind, ob das von Ihnen verwendete Objekt leer ist, verwenden Sie bitte diesen Java -Trick
3) Verwenden Sie die Null -Safe -Methode oder Klassenbibliothek
Es gibt viele Open -Source -Komponenten, die jetzt Null überprüft haben. Einer der häufigsten sind die Stringutils von Apache. Sie können Stringutils.isblank (), isNumberic (), IsWhiteSpace () und andere Tools verwenden, ohne sich über NullpointException -Methoden zu sorgen.
System.out.println (Stringutils.isempty (null)); system.out.println (Stringutils.isblank (null));
Vergessen Sie jedoch nicht, die Dokumentation zu Null -Sicherheitsmethoden und Klassen zu lesen, bevor Sie Schlussfolgerungen ziehen. Dies ist ein weiterer bester Java -Bohrer, bei dem Sie nicht viel Anstrengungen unternehmen müssen, aber Sie viel Fortschritte machen werden.
4) Vermeiden Sie es, eine leere Sammlung oder ein leeres Array zurückzugeben, anstatt Null aus der Methode zurückzugeben
Diese Java -Technik wird auch in Joshua Blochs "effektivem Java" erwähnt. Dieses Buch ist auch eine Quelle zur Verbesserung der Java -Codierungsfunktionen. Durch die Rückgabe einer leeren Sammlung oder eines leeren Arrays kann festgestellt werden, dass grundlegende Anrufe wie Size () und Länge () keine NullpointException werfen. Die Sammlungsklasse kann eine bequeme leere Liste, ein Set und die Karte bereitstellen, (diese) sammeln.emppty_list, collections.eMpty_set und collections.eMpty_map und diese können verwendet werden (statische Variablen).
Der Code ist wie folgt;
öffentliche Liste getorders (Kunde Kunde) {Listenergebnis = Collections.Empty_List; Rückgabeergebnis; }In ähnlicher Weise können Sie Collections.Empty_List, Collections.Empty_Set und Collections.Empty_Map verwenden, anstatt NULL zurückzugeben.
5) Kommentar mit @notnull und @nulleable
Beim Schreiben können Sie eine Nullabilität der Konvention definieren. Moderne Compiler, IDEs und andere Tools können diesen Kommentar lesen, um eine leere Überprüfung durchzuführen oder Ihnen mitzuteilen, ob Sie eine leere Überprüfung benötigen. Intellijide und Findbugs unterstützen diese Annotation bereits. Diese Kommentare sind auch Teil von JSR 305 (Anmerkung des Übersetzers: Es kann als Standard von Java verstanden werden). Durch das Sehen von @notnull und @Nulleable können Programmierer entscheiden, ob die leere Überprüfung durchgeführt werden sollen. Dies ist übrigens die neue Best Practice für Java -Programmierer, obwohl es ein wenig Zeit dauert, um sich anzupassen.
6) Befolgen Sie die Konventionen und definieren Sie angemessene Ausfallwerte
Im Java -Bereich besteht eine der besten Möglichkeiten, Null -Zeiger zu vermeiden, darin, Vereinbarungen zu treffen und sie einzuhalten. Die meisten NullPointexceptions treten auf, da sie unvollständige Informationen verwenden oder nicht alle Abhängigkeiten zum Erstellen von Objekten zur Verfügung stehen. Wenn Sie nicht erlauben, unvollständige Objekte zu erstellen und solche Anforderungen zu negieren, können Sie viele NullPointexceptions verhindern, die nach einer Weile auftreten. Wenn das Objekt erstellt werden darf, sollten Sie einen angemessenen Standardwert festlegen. Beispielsweise kann ein Mitarbeiterobjekt ohne die Attribute für ID- und Namensattribute erstellt werden, aber es kann eine optionale PGHONE -Nummer haben. Wenn der Mitarbeiter keine Telefonnummer hat, geben Sie eine 0 zurück, anstatt einen Nullwert zurückzugeben. Diese Art der Verarbeitung muss jedoch sehr sorgfältig überprüft werden, anstatt auf illegale Eingaben zu überprüfen. Beachten Sie auch, dass beim Definieren eines Nullwerts oder nicht der Anrufer daran erinnert, die fundierte Entscheidung zu treffen. Das Auswählen oder Akzeptieren von Nullwerten nach dem Scheitern ist auch ein wichtiges Design, auf das Sie achten müssen.
7) Wenn Sie eine Datenbank verwenden, um Ihr Domain -Objekt zu speichern (Demain -Objekt)
Zum Beispiel: Kunde, Bestellungen usw., dann sollten Sie einige Einschränkungen für Nullwerte in der Datenbank definieren. Da die Datenbank Daten aus mehreren Quellen benötigen, wird die Überprüfung der Nullwerte in der Datenbank die Integrität der Daten gewährleistet. Wenn Sie Einschränkungen für Nullwerte in der Datenbank beibehalten, können Sie auch die Nullprüfung in Java reduzieren. Wenn Sie ein Objekt aus der Datenbank nehmen, können Sie sicherstellen, dass diese Eigenschaften leer sein können und diese Eigenschaften nicht leer sein können, was den Code für diese leeren Überprüfungen minimiert.
8) Verwenden Sie den leeren Objektmodus
Dies ist eine weitere Möglichkeit, NullpointException in Java zu vermeiden. Wenn eine Methode ein Objekt zurückgibt, das Anrufer über das Objekt iterieren möchte, muss Caller einige Methoden verwenden, die der Sammlung ähnlich sind. Wenn der Anrufer keine der oben genannten Methoden hat, ist es möglich, dass das leere Objekt anstelle von Null zurückgegeben wird. Ein leeres Objekt ist ein spezielles Objekt, das in unterschiedlichen Kontexten unterschiedliche Bedeutungen aufweist. In Fällen, in denen Methoden wie diese Kontrainter oder Verbindungstypen zurückgeben, sollte das leere Objekt (leeres Objekt) im Inneren verwendet werden, anstatt leer zurückzukehren.