{"id":3057,"date":"2015-02-03T20:39:55","date_gmt":"2015-02-03T18:39:55","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=3057"},"modified":"2015-02-03T20:39:55","modified_gmt":"2015-02-03T18:39:55","slug":"null-coalescing-operator-in-java-nachbilden","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2015\/02\/null-coalescing-operator-in-java-nachbilden\/","title":{"rendered":"null coalescing operator in Java nachbilden"},"content":{"rendered":"<p>Da null viel zu oft vorkommt, null-Referenzierungen aber vermieden werden m\u00fcssen, gibt es viel Code der Art: o != null ? o : non_null_o. <\/p>\n<p>Diverse Programmiersprachen bieten f\u00fcr dieses Konstrukt eine Abk\u00fcrzung \u00fcber den sogenannten null coalescing operator (Coalescing, zu Deutsch verschmelzend), der geschrieben wird mal als ?? oder als ?:, f\u00fcr unser Beispiel: o ?? non_null_o. Besonders h\u00fcbsch ist dass bei sequenziellen Tests der Art o ?? p ?? q ?? r, wo es dann sinngem\u00e4\u00df lautete: Liefere die erste Referenz ungleich null. <\/p>\n<p>Java-Programmierer kommen nicht zu diesem Gl\u00fcck, k\u00f6nnen aber tricksen (<a title=\"http:\/\/stackoverflow.com\/a\/28306286\/388317\" href=\"http:\/\/stackoverflow.com\/a\/28306286\/388317\">http:\/\/stackoverflow.com\/a\/28306286\/388317<\/a>): <\/p>\n<p>If there are only two references to test and you are using Java 8, you could use<\/p>\n<pre><code>Object o = null;\nObject p = \"p\";\nObject r = Optional.ofNullable( o ).orElse( p );\nSystem.out.println( r );   \/\/ p<\/code><\/pre>\n<p>If you import static Optional the expression is not too bad.\n<\/p>\n<p>Unfortunately your case with &#8222;several variables&#8220; is not possible with an Optional-method. Instead you could use:<\/p>\n<pre><p><code>Object o = null;\nObject p = null;\nObject q = \"p\";\n\nOptional&lt;Object&gt; r = Stream.of( o, p, q ).filter( Objects::nonNull ).findFirst();\nSystem.out.println( r.get() );   \/\/ p<\/code><\/p><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Da null viel zu oft vorkommt, null-Referenzierungen aber vermieden werden m\u00fcssen, gibt es viel Code der Art: o != null ? o : non_null_o. Diverse Programmiersprachen bieten f\u00fcr dieses Konstrukt eine Abk\u00fcrzung \u00fcber den sogenannten null coalescing operator (Coalescing, zu Deutsch verschmelzend), der geschrieben wird mal als ?? oder als ?:, f\u00fcr unser Beispiel: o [&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":[66],"tags":[],"class_list":["post-3057","post","type-post","status-publish","format-standard","hentry","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\/3057","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=3057"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3057\/revisions"}],"predecessor-version":[{"id":3058,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3057\/revisions\/3058"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=3057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=3057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=3057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}