{"id":38715,"date":"2023-12-04T16:15:28","date_gmt":"2023-12-04T15:15:28","guid":{"rendered":"https:\/\/www.happycoders.eu\/?p=38715"},"modified":"2025-06-12T09:03:18","modified_gmt":"2025-06-12T07:03:18","slug":"unbenannte-variablen-und-patterns","status":"publish","type":"post","link":"https:\/\/www.happycoders.eu\/de\/java\/unbenannte-variablen-und-patterns\/","title":{"rendered":"Unbenannte Variablen und Patterns in Java"},"content":{"rendered":"\n<p>In diesem Artikel erf\u00e4hrst du:<\/p>\n\n\n\n<ul class=\"wp-block-list hc-checked-list\">\n<li>Was ist eine unbenannte Variable, und welchen Zweck erf\u00fcllt sie?<\/li>\n\n\n\n<li>Was sind unbenannte Patterns und unbenannte Pattern-Variablen, und welchen Zweck erf\u00fcllen sie?<\/li>\n\n\n\n<li>Wie kann man Switch-Ausdr\u00fccke mit unbenannten Pattern-Variablen pr\u00e4gnanter schreiben?<\/li>\n<\/ul>\n\n\n\n<p>Unbenannte Variablen und Patterns wurden in <a href=\"\/de\/java\/java-21-features\/#Unnamed_Patterns_and_Variables_Preview_JEP_443\">Java 21<\/a>&nbsp;im Rahmen von&nbsp;<a href=\"https:\/\/openjdk.org\/projects\/amber\/\" target=\"_blank\" rel=\"noopener\">Project Amber<\/a>&nbsp;als Preview-Feature eingef\u00fchrt. In <a href=\"\/de\/java\/java-22-features\/#Unnamed_Variables_Patterns_JEP_456\">Java 22<\/a> wurden sie finalisiert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"unbenannte-variablen\">Unbenannte Variablen<\/h2>\n\n\n\n<p>Oft kommt es vor, dass wir eine Variable definieren m\u00fcssen, die wir gar nicht ben\u00f6tigen. Hier zwei Beispiele, die wahrscheinlich die meisten von euch kennen:<\/p>\n\n\n\n<p>Beispiel 1: Exceptions \u2013 hier wird <code>e<\/code> nicht verwendet:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">try<\/span> {\n  <span class=\"hljs-keyword\">int<\/span> number = Integer.parseInt(string);\n} <span class=\"hljs-keyword\">catch<\/span> (NumberFormatException e) {\n  System.err.println(<span class=\"hljs-string\">\"Not a number\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Beispiel 2: <code>Map.computeIfAbsent()<\/code> \u2013 hier wird <code>k<\/code> nicht verwendet:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">map.computeIfAbsent(key, k -&gt; <span class=\"hljs-keyword\">new<\/span> ArrayList&lt;&gt;()).add(value);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Ab Java 22 (bzw. ab Java 21 mit aktivierten Preview-Features) m\u00fcssen wir solche Variablen nicht mehr benennen, sondern d\u00fcrfen (wie in anderen Programmiersprachen lange \u00fcblich) stattdessen den Unterstrich (<code>_<\/code>) verwenden:<\/p>\n\n\n\n<p>Hier das Exception-Beispiel mit unbenannter Variable:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">try<\/span> {\n  <span class=\"hljs-keyword\">int<\/span> number = Integer.parseInt(string);\n} <span class=\"hljs-keyword\">catch<\/span> (NumberFormatException _) {\n  System.err.println(<span class=\"hljs-string\">\"Not a number\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Und das <code>computeIfAbsent()<\/code>-Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">map.computeIfAbsent(key, _ -&gt; <span class=\"hljs-keyword\">new<\/span> ArrayList&lt;&gt;()).add(value);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Bei einer Exception mag man sich \u00fcber das F\u00fcr und Wider einer unbenannten Variable streiten. Wir sind daran gew\u00f6hnt eine Exception mit \u201ee\u201d zu bezeichnen, bzw. unsere IDE das automatisch machen zu lassen. <\/p>\n\n\n\n<p>Bei <code>computeIfAbsent()<\/code> hingegen habe ich mir immer Gedanken dar\u00fcber gemacht, wie ich die nicht ben\u00f6tigte Variable benennen soll. Manchmal wurde es ein <code>k<\/code> (f\u00fcr \u201ekey\u201d), manchmal ein <code>ignored<\/code> und manchmal ein <code>__<\/code> (doppelter Unterstrich\u00b2). Hier ist die unbenannte Variable eine gro\u00dfe Hilfe.<\/p>\n\n\n\n<p class=\"hc-footnote\">\u00b2 Der einfache Unterstrich war seit Java 9 in Vorbereitung auf genau dieses Feature nicht mehr erlaubt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"unbenannte-patterns-und-pattern-variablen\">Unbenannte Patterns und Pattern-Variablen<\/h2>\n\n\n\n<p>Das Feature hei\u00dft allerdings nicht \u201eUnnamed Variables\u201d, sondern \u201eUnnamed Patterns and Variables\u201d und hat somit noch einiges mehr zu bieten \u2013 und zwar bei den in Java 21 finalisierten Features <a href=\"\/de\/java\/java-21-features\/#Record_Patterns_JEP_440\">Record Patterns<\/a> und <a href=\"\/de\/java\/java-21-features\/#Pattern_Matching_for_switch_JEP_441\">Pattern Matching for Switch<\/a>.<\/p>\n\n\n\n<p>Die Variable <code>y<\/code> wird im \u201ethen-Block\u201d des folgenden Code-Beispiels nicht ben\u00f6tigt:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-function\">object <span class=\"hljs-keyword\">instanceof<\/span> <span class=\"hljs-title\">Position<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> x, <span class=\"hljs-keyword\">int<\/span> y)<\/span>) <\/span>{\n  System.out.println(<span class=\"hljs-string\">\"object is a position, x = \"<\/span> + x);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Auch hier k\u00f6nnen wir deswegen <code>y<\/code> durch einen Unterstrich ersetzen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-function\">object <span class=\"hljs-keyword\">instanceof<\/span> <span class=\"hljs-title\">Position<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> x, <span class=\"hljs-keyword\">int<\/span> _)<\/span>) <\/span>{\n  System.out.println(<span class=\"hljs-string\">\"object is a position, x = \"<\/span> + x);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Das nennt sich dann \u201eunbenannte Pattern-Variable\u201d.<\/p>\n\n\n\n<p>Wir k\u00f6nnen sogar noch einen Schritt weiter gehen und das komplette Teil-Pattern <code>int y<\/code> durch einen Unterstrich ersetzen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-function\">object <span class=\"hljs-keyword\">instanceof<\/span> <span class=\"hljs-title\">Position<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> x, _)<\/span>) <\/span>{\n  System.out.println(<span class=\"hljs-string\">\"object is a position, x = \"<\/span> + x);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Das nennt sich dann \u201eunbenanntes Pattern\u201d. <\/p>\n\n\n\n<p>Im vorigen Beispiel hat das noch keine gro\u00dfe Auswirkung; bei verschachtelten Patterns hingegen l\u00e4sst sich damit eine Menge Platz sparen. Im folgenden Beispiel verwenden wir nur die Variablen <code>x1<\/code> und <code>y1<\/code>, w\u00e4hrend <code>x2<\/code> und <code>y2<\/code> unbenutzt sind:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-function\">object <span class=\"hljs-keyword\">instanceof<\/span> <span class=\"hljs-title\">Path<\/span><span class=\"hljs-params\">(Position(<span class=\"hljs-keyword\">int<\/span> x1, <span class=\"hljs-keyword\">int<\/span> y1)<\/span>, <span class=\"hljs-title\">Position<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> x2, <span class=\"hljs-keyword\">int<\/span> y2)<\/span>)) <\/span>{\n  System.out.printf(<span class=\"hljs-string\">\"object is a path starting at x = %d, y = %d%n\"<\/span>, x1, y1));\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Hier k\u00f6nnen wir das komplette zweite <code>Position<\/code>-Pattern durch den Unterstrich ersetzen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-function\">object <span class=\"hljs-keyword\">instanceof<\/span> <span class=\"hljs-title\">Path<\/span><span class=\"hljs-params\">(Position(<span class=\"hljs-keyword\">int<\/span> x1, <span class=\"hljs-keyword\">int<\/span> y1)<\/span>, _)) <\/span>{\n  System.out.printf(<span class=\"hljs-string\">\"object is a path starting at x = %d, y = %d%n\"<\/span>, x1, y1));\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Das stellt doch eine deutliche Verbesserung dar!<\/p>\n\n\n<div class=\"convertkit-form wp-block-convertkit-form\" style=\"\"><script async data-uid=\"1427197203\" src=\"https:\/\/happycoders.kit.com\/1427197203\/index.js\" data-jetpack-boost=\"ignore\" data-no-defer=\"1\" data-no-optimize=\"1\" nowprocket><\/script><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"unbenannte-pattern-variablen-und-pattern-matching-for-switch\">Unbenannte Pattern-Variablen und Pattern Matching for Switch<\/h2>\n\n\n\n<p>Hier ein Beispiel mit nicht verwendeten Variablen bei <em>Pattern Matching for Switch<\/em>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">switch<\/span> (obj) {\n  <span class=\"hljs-keyword\">case<\/span> Byte    b -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Short   s -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Integer i -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Long    l -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n\n  <span class=\"hljs-keyword\">case<\/span> Float  f -&gt; System.out.println(<span class=\"hljs-string\">\"Floating point number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Double d -&gt; System.out.println(<span class=\"hljs-string\">\"Floating point number\"<\/span>);\n\n  <span class=\"hljs-keyword\">default<\/span> -&gt; System.out.println(<span class=\"hljs-string\">\"Not a number\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Auch hier d\u00fcrfen wir alle Variablennamen durch Unterstriche ersetzen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">switch<\/span> (obj) {\n  <span class=\"hljs-keyword\">case<\/span> Byte    _ -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Short   _ -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Integer _ -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Long    _ -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n\n  <span class=\"hljs-keyword\">case<\/span> Float  _ -&gt; System.out.println(<span class=\"hljs-string\">\"Floating point number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Double _ -&gt; System.out.println(<span class=\"hljs-string\">\"Floating point number\"<\/span>);\n\n  <span class=\"hljs-keyword\">default<\/span> -&gt; System.out.println(<span class=\"hljs-string\">\"Not a number\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Wir k\u00f6nnen sogar noch einen Schritt weitergehen und alle F\u00e4lle mit gleichen Aktionen zusammenfassen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">switch<\/span> (obj) {\n  <span class=\"hljs-keyword\">case<\/span> Byte _, Short _, Integer _, Long _ -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Float _, Double _                  -&gt; System.out.println(<span class=\"hljs-string\">\"Floating point number\"<\/span>);\n\n  <span class=\"hljs-keyword\">default<\/span> -&gt; System.out.println(<span class=\"hljs-string\">\"Not a number\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Und das ist \u2013 neben der pr\u00e4gnanteren Schreibweise \u2013 der zweite gro\u00dfe Vorteil der unbenannten Pattern-Variable! Mit benannten Variablen w\u00e4re das n\u00e4mlich nicht m\u00f6glich gewesen. Der folgende Code ist <em>nicht<\/em> g\u00fcltig:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">switch<\/span> (obj) {\n  <span class=\"hljs-comment\">\/\/ Not allowed!          <\/span>\n  <span class=\"hljs-keyword\">case<\/span> Byte b, Short s, Integer i, Long l -&gt; System.out.println(<span class=\"hljs-string\">\"Integer number\"<\/span>);\n  <span class=\"hljs-keyword\">case<\/span> Float f, Double d                  -&gt; System.out.println(<span class=\"hljs-string\">\"Floating point number\"<\/span>);\n\n  <span class=\"hljs-keyword\">default<\/span> -&gt; System.out.println(<span class=\"hljs-string\">\"Not a number\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Dieser Code f\u00fchrt zu folgendem Compilerfehler:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">error: illegal fall-through from a pattern\n  case Byte b, Short s, Integer i, Long l -&gt; System.out.println(\"Integer number\");\n               ^<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Der entscheidende Unterschied ist, dass auf <em>benannte<\/em> Variablen von nachfolgendem Code aus zugegriffen werden kann, w\u00e4hrend auf <em>unbenannte<\/em> Variablen nicht zugegriffen werden darf. Da der Compiler nicht wei\u00df, welches Pattern zur Laufzeit matchen wird, wei\u00df er auch nicht, auf welche der Variablen <code>b<\/code>, <code>s<\/code>, <code>i<\/code> und <code>l<\/code> zugegriffen werden darf. Daher l\u00e4sst er pro Fall nur eine <em>benannte<\/em> Variable, aber beliebig viele <em>unbenannte<\/em> Variablen zu.<\/p>\n\n\n\n<p>Unnamed Variables &amp; Patterns werden in <a href=\"https:\/\/openjdk.org\/jeps\/456\" target=\"_blank\" rel=\"noreferrer noopener\">JDK Enhancement Proposal 456<\/a> definiert. Dort findest du noch ein paar weitere Beispiele f\u00fcr den Einsatz unbenannter Variablen.<\/p>\n<aside><p>Wenn dir der Artikel weitergeholfen hat, w\u00fcrde ich mich sehr \u00fcber eine positive Bewertung auf meinem <a href=\"https:\/\/www.provenexpert.com\/de-de\/sven-woltmann-happycoders-eu\/7smk\/\" target=\"_blank\" rel=\"noopener\">ProvenExpert-Profil<\/a> freuen. Dein Feedback hilft mir, meine Inhalte weiter zu verbessern und motiviert mich, neue informative Artikel zu schreiben.<\/p>\r\n                        <p>\ud83d\udc49 <a href=\"https:\/\/www.provenexpert.com\/de-de\/sven-woltmann-happycoders-eu\/7smk\/\" target=\"_blank\" rel=\"noopener\">Bewertung abgeben<\/a><\/p>\r\n                        <p>Du m\u00f6chtest \u00fcber alle neue Java-Features auf dem Laufenden sein? Dann <a href=\"#\" data-formkit-toggle=\"d8ee997126\">klicke hier<\/a>, um dich f\u00fcr den HappyCoders-Newsletter anzumelden.<\/p>\r\n                        <p>\ud83d\udc49 <a href=\"#\" data-formkit-toggle=\"d8ee997126\">Newsletter-Anmeldung<\/a><\/p><\/aside>","protected":false},"excerpt":{"rendered":"<p>Variablen &#038; Patterns, die wir definieren m\u00fcssen, aber nicht ben\u00f6tigen, k\u00f6nnen wir mit '_' bezeichnen. Erfahre, was du dabei beachten musst.<\/p>\n","protected":false},"author":1,"featured_media":38720,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"Variablen & Patterns, die wir definieren m\u00fcssen, aber nicht ben\u00f6tigen, k\u00f6nnen wir mit '_' bezeichnen. Erfahre, was du dabei beachten musst.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"unbenannte variablen,unbenannte-variablen","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"_uag_custom_page_level_css":"","_wp_convertkit_post_meta":{"form":"-1","landing_page":"","tag":"0","restrict_content":"0"},"_metis_text_type":"standard","_metis_text_length":6627,"_post_count":0,"footnotes":""},"categories":[64],"tags":[179],"class_list":["post-38715","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java-amber-de"],"uagb_featured_image_src":{"full":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns.jpg",1770,986,false],"thumbnail":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns.jpg",150,84,false],"medium":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns.jpg",300,167,false],"medium_large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns.jpg",768,428,false],"large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns.jpg",1024,570,false],"feature_thumb_224":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-224x125.jpg",224,125,true],"feature_thumb_336":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-336x187.jpg",336,187,true],"feature_thumb_504":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-504x281.jpg",504,281,true],"feature_thumb_672":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-672x374.jpg",672,374,true],"half_400":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-400x223.jpg",400,223,true],"half_600":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-600x334.jpg",600,334,true],"full_800":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-800x446.jpg",800,446,true],"full_944":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-944x526.jpg",944,526,true],"full_1200":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-1200x668.jpg",1200,668,true],"wide_1180":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-1180x490.jpg",1180,490,true],"wide_1770":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns-1770x735.jpg",1770,735,true],"1536x1536":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns.jpg",1536,856,false],"2048x2048":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/12\/unnamed_variables_and_patterns.jpg",1770,986,false]},"uagb_author_info":{"display_name":"Sven Woltmann","author_link":"https:\/\/www.happycoders.eu\/de\/author\/sven\/"},"uagb_comment_info":0,"uagb_excerpt":"Variablen & Patterns, die wir definieren m\u00fcssen, aber nicht ben\u00f6tigen, k\u00f6nnen wir mit '_' bezeichnen. Erfahre, was du dabei beachten musst.","public_identification_id":"1de8120d46ac492ab24a059c4b35c6fb","private_identification_id":"70d2c97b60934a019cf59581c146bf6b","_links":{"self":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/38715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/comments?post=38715"}],"version-history":[{"count":10,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/38715\/revisions"}],"predecessor-version":[{"id":52470,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/38715\/revisions\/52470"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media\/38720"}],"wp:attachment":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media?parent=38715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/categories?post=38715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/tags?post=38715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}