{"id":1924,"date":"2013-06-06T16:11:51","date_gmt":"2013-06-06T14:11:51","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1924"},"modified":"2013-06-06T16:11:51","modified_gmt":"2013-06-06T14:11:51","slug":"null-prfungen-mit-eingebauter-ausnahmebehandlung","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/06\/null-prfungen-mit-eingebauter-ausnahmebehandlung\/","title":{"rendered":"null-Pr&uuml;fungen mit eingebauter Ausnahmebehandlung"},"content":{"rendered":"<p>Bei den vorangehenden Methoden wird null als Sonderfall behandelt, und Ausnahmen vermieden. So sind etwa Objects.toString(null) oder Objects.hashCode(null) in Ordnung und es wird um null \u201eherumgearbeitet.\u201c Das ist nicht immer sinnvoll, denn traditionell gilt es null als Argument und in den R\u00fcckgaben zu vermeiden. Es ist daher gut, als erstes in einem Methodenrumpf zu testen, ob die Argumente ungleich null sind \u2013 es sei denn, das ist unbedingt gew\u00fcnscht.<\/p>\n<p>F\u00fcr diese Tests, dass Referenzen ungleich null sind, bietet Objects ein paar requireNonNull(\u2026)-Methoden, die null-Pr\u00fcfungen \u00fcbernehmen und im Fehlerfall eine NullPointerException ausl\u00f6sen. Diese Tests sind dann praktisch bei Konstruktoren oder Settern, die Werte initialisieren sollen, aber verhindern m\u00f6chten, dass null durchgeleitet wird.<\/p>\n<p>Beispiel<\/p>\n<p>Die Methode setName(\u2026) soll kein name-Argument gleich null erlauben:<\/p>\n<p>public void setName( String name ) {   <br \/>this.name = Objects.requireNonNull( name );    <br \/>}<\/p>\n<p>Alternativ ist eine Fehlermeldung m\u00f6glich:<\/p>\n<p>public void setName( String name ) {   <br \/>this.name = Objects.requireNonNull( name, &quot;Name darf nicht null sein!&quot; );    <br \/>}<\/p>\n<p>class java.util.Objects<\/p>\n<p>\u00a7 static &lt;T&gt; T n requireNonNull(T obj)   <br \/>L\u00f6st eine NullPointerException aus, wenn obj gleich null ist. Sonst liefert sie obj als R\u00fcckgabe. Die Deklaration ist generisch und so zu verstehen, dass der Parametertyp gleich dem R\u00fcckgabetyp ist.<\/p>\n<p>\u00a7 static &lt;T&gt; T requireNonNull(T obj, String message)   <br \/>Wie requireNonNull(obj), nur dass die Meldung der NullPointerException bestimmt wird.<\/p>\n<p>\u00a7 static &lt;T&gt; T requireNonNull(T obj, Supplier&lt;String&gt; messageSupplier)   <br \/>Wie requireNonNull(obj, message), nur kommt die Meldung aus dem messageSupplier. Das ist praktisch f\u00fcr Nachrichten, deren Aufbau teurer ist, denn der Supplier schiebt die Kosten f\u00fcr die Erstellung des Strings so lange hinaus, bis es wirklich zu einer NullPointerException kommt, denn erst dann ist die Meldung n\u00f6tig. Neu in Java 8.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei den vorangehenden Methoden wird null als Sonderfall behandelt, und Ausnahmen vermieden. So sind etwa Objects.toString(null) oder Objects.hashCode(null) in Ordnung und es wird um null \u201eherumgearbeitet.\u201c Das ist nicht immer sinnvoll, denn traditionell gilt es null als Argument und in den R\u00fcckgaben zu vermeiden. Es ist daher gut, als erstes in einem Methodenrumpf zu testen, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11,66],"tags":[],"class_list":["post-1924","post","type-post","status-publish","format-standard","hentry","category-insel","category-java-8"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1924"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1924\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}