Beispiel für eine Gegenmaßnahme gegen NullPointerException (optional) für Java8 oder höher

Über diesen Artikel

Ich habe einen neuen Weg gefunden, um mit NullPointerException in Java8 umzugehen, daher werde ich ihn als Erinnerung schreiben.

Veranstaltung

Ich werde versuchen, schleimig sofort zu löschen.

java



public class Test {
	public static void main(String[] args) {
		String str = null;
		System.out.print(str.length());
	}
}

Verarbeitungsergebnis


Exception in thread "main" java.lang.NullPointerException
	at Test.main(Test.java:6)

Ich habe eine NullPointerException. Als Problemumgehung aus Java8 implementiert, indem Sie Optional hinzufügen NullPointer kann behandelt werden. Ändern Sie mit dem Bild unten.

Aktionsbeispiel


import java.util.Optional;

public class Test {

	public static void main(String[] args) {
		String str = null;
//		System.out.print(str.length());
		
		Optional<String> strOpt = Optional.ofNullable(str);
		strOpt.ifPresent(v -> System.out.println(v.length()));
	}
}

Der Vorgang wurde ohne NullPointerException abgeschlossen.

Kurzer Kommentar

"Optional" ist in Java8 und höher implementiert https://docs.oracle.com/javase/jp/8/docs/api/java/util/Optional.html

Optional<String> strOpt = Optional.ofNullable(str);

Sie können die Funktion ofNullable () verwenden, indem Sie str wie folgt mit Optional umschließen. Als Argument für die Funktion "ifPresent" Speichern Sie den Inhalt von str einmal in der Variablen v und verwenden Sie ihn in der Systemübersicht Diese Methode wird als Lambda-Ausdruck bezeichnet und ist eine neue Funktion, die von java8 zusammen mit Optional implementiert wird.

strOpt.ifPresent(v -> System.out.println(v.length()));

Übrigens ein schlechtes Beispiel für die Verwendung von "isPresent" und "get ()" ... (Hinzugefügt am 31.07.2020)

Zuerst habe ich das folgende Beispiel als ein anderes Muster geschrieben, aber die folgende Methode scheint *** eine tödliche Problemumgehung *** zu sein. Ich werde es als schlechtes Beispiel mit einem Gebot an mich selbst posten. Sie können es sehen, indem Sie diesen Artikel lesen https://qiita.com/BlueRayi/items/ef46496ef2ef36b9cbb7#%E3%81%AA%E3%82%8B%E3%81%B9%E3%81%8Foptionalifpresent%E3%82%82%E4%BD%BF%E3%81%86%E3%81%AA (* Wenn Sie diesen Artikel lesen, scheint es, dass die Nullprüfung selbst mit Optional in erster Linie Unsinn ist.)

schlechtes Beispiel


import java.util.Optional;

public class Test {
	public static void main(String[] args) {
		String str = null;
//		System.out.print(str.length());
		
		Optional<String> strOpt = Optional.ofNullable(str);
		if(strOpt.isPresent()) {
			String message = strOpt.get();
			System.out.println(message.length());
		}
	}
}

Insbesondere ist es einfach, die Methode zum Abrufen des Werts () mit isPresent () in der if-Anweisung zu implementieren. Es ist gut zu glauben, dass die Funktion isPresent () verwendet wird, wenn sie unvermeidbar ist, da der Vorteil der Verwendung von Optional nicht genutzt wird und der folgende Artikel in Bezug auf die Nuance leicht zu verstehen scheint.

Sie sollten get selten verwenden. Der Zweck der Verwendung von Optional ist die Meldung "Wenn kein Wert vorhanden ist, tun Sie dies bitte." Wenn Sie mit> get plötzlich eine Ausnahme erhalten, entspricht dies einer NullPointerException.

https://irof.hateblo.jp/entry/2015/05/05/071450

Recommended Posts

Beispiel für eine Gegenmaßnahme gegen NullPointerException (optional) für Java8 oder höher
So debuggen Sie Java 9 oder höher remote
Lesen Sie den Hinweis zur Dateikopie von Java 1.7 oder höher
Fragen Sie n Werktage später bei JAVA nach
Für JAVA-Lernen (2018-03-16-01)
Java Optionaler Typ
Java 8 studieren (optional)
2017 IDE für Java
Java für Anweisung
[Java] Optionales Memorandum
Java 9 Optional :: stream
Beispielprogramm für die Eingabe / Ausgabe von Java-Dateien (jdk1.8 oder höher)
[Gradle] Generieren Sie Javadoc einschließlich JavaScript in Java 1.8.0_121 oder höher