{"id":116,"date":"2023-12-28T16:10:01","date_gmt":"2023-12-28T15:10:01","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=116"},"modified":"2024-01-08T09:12:20","modified_gmt":"2024-01-08T08:12:20","slug":"enumerations-in-java","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=116","title":{"rendered":"Enumerations in Java"},"content":{"rendered":"\n<p>Enums, oder Aufz\u00e4hlungstypen, sind eine leistungsstarke Funktion in der Java-Programmiersprache, die es Entwicklern erm\u00f6glicht, eine begrenzte Menge von konstanten Werten zu definieren. Enums bieten eine elegante M\u00f6glichkeit, verschiedene Konstanten zu gruppieren und sie in Ihrem Code zu verwenden. In diesem Artikel werden wir die Grundlagen der Erstellung von Enums in Java, ihre Verwendung in switch-Statements, das Hinzuf\u00fcgen eigener Attribute und Methoden zu Enums sowie die Verwendung von EnumSet und EnumMap im Vergleich zu normalen HashSet und HashMaps behandeln.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grundlagen der Erstellung eines Enums<\/h2>\n\n\n\n<p>Ein Enum in Java wird mit dem <code>enum<\/code>-Schl\u00fcsselwort erstellt. Hier ist ein einfaches Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> enum Wochentage {\n    MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG, SAMSTAG, SONNTAG\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel haben wir ein Enum namens <code>Wochentage<\/code> erstellt, das die Wochentage darstellt. Jedes Element in einem Enum ist eine Konstante und wird gro\u00df geschrieben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verwendung von Enums in switch-Statements<\/h2>\n\n\n\n<p>Eine der h\u00e4ufigsten Verwendungen von Enums ist die Verwendung in <code>switch<\/code>-Statements, um bedingte Logik basierend auf den Enum-Werten auszuf\u00fchren. Hier ist ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Wochentage tag = Wochentage.MONTAG;\n\n<span class=\"hljs-keyword\">switch<\/span> (tag) {\n    <span class=\"hljs-keyword\">case<\/span> MONTAG:\n        System.out.println(<span class=\"hljs-string\">\"Heute ist Montag.\"<\/span>);\n        <span class=\"hljs-keyword\">break<\/span>;\n    <span class=\"hljs-keyword\">case<\/span> DIENSTAG:\n        System.out.println(<span class=\"hljs-string\">\"Heute ist Dienstag.\"<\/span>);\n        <span class=\"hljs-keyword\">break<\/span>;\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n    <span class=\"hljs-keyword\">default<\/span>:\n        System.out.println(<span class=\"hljs-string\">\"Das ist kein g\u00fcltiger Wochentag.\"<\/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\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Dieser Code verwendet das <code>switch<\/code>-Statement, um den aktuellen Wochentag basierend auf dem Wert der <code>tag<\/code>-Variable auszugeben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hinzuf\u00fcgen eigener Attribute und Methoden zu Enums<\/h2>\n\n\n\n<p>Enums k\u00f6nnen nicht nur Konstanten speichern, sondern auch eigene Attribute und Methoden haben. Hier ist ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> enum Wochentage {\n    MONTAG(<span class=\"hljs-string\">\"Montag\"<\/span>, <span class=\"hljs-number\">1<\/span>),\n    DIENSTAG(<span class=\"hljs-string\">\"Dienstag\"<\/span>, <span class=\"hljs-number\">2<\/span>),\n    MITTWOCH(<span class=\"hljs-string\">\"Mittwoch\"<\/span>, <span class=\"hljs-number\">3<\/span>),\n    DONNERSTAG(<span class=\"hljs-string\">\"Donnerstag\"<\/span>, <span class=\"hljs-number\">4<\/span>),\n    FREITAG(<span class=\"hljs-string\">\"Freitag\"<\/span>, <span class=\"hljs-number\">5<\/span>),\n    SAMSTAG(<span class=\"hljs-string\">\"Samstag\"<\/span>, <span class=\"hljs-number\">6<\/span>),\n    SONNTAG(<span class=\"hljs-string\">\"Sonntag\"<\/span>, <span class=\"hljs-number\">7<\/span>);\n\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> String name;\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> int nummer;\n\n    Wochentage(String name, int nummer) {\n        this.name = name;\n        this.nummer = nummer;\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> String getName() {\n        <span class=\"hljs-keyword\">return<\/span> name;\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> int getNummer() {\n        <span class=\"hljs-keyword\">return<\/span> nummer;\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel haben wir dem <code>Wochentage<\/code>-Enum zwei Attribute (<code>name<\/code> und <code>nummer<\/code>) hinzugef\u00fcgt und einen Konstruktor sowie Methoden zum Abrufen dieser Attribute erstellt. Dadurch k\u00f6nnen wir jetzt den Namen und die Nummer eines Wochentags abrufen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verwendung von EnumSet und EnumMap<\/h2>\n\n\n\n<p>EnumSet und EnumMap sind spezialisierte Sammlungsklassen in Java, die f\u00fcr die Verwendung mit Enums optimiert sind. EnumSet ist eine alternative Implementierung zu HashSet, die f\u00fcr Enums optimiert ist, w\u00e4hrend EnumMap eine alternative Implementierung zu HashMap ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">EnumSet<\/h3>\n\n\n\n<p>EnumSet wird verwendet, um eine Menge von Enum-Konstanten darzustellen. Es bietet hohe Leistung und einen geringen Speicherverbrauch im Vergleich zu HashSet. Hier ist ein einfaches Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">EnumSet<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Wochentage<\/span>&gt;<\/span> arbeitswochenTage = EnumSet.range(Wochentage.MONTAG, Wochentage.FREITAG);\n\nfor (Wochentage tag : arbeitswochenTage) {\n    System.out.println(\"Arbeitstag: \" + tag.getName());\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel erstellen wir ein EnumSet <code>arbeitswochenTage<\/code>, das die Arbeitstage von Montag bis Freitag enth\u00e4lt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">EnumMap<\/h3>\n\n\n\n<p>EnumMap ist eine spezialisierte Map-Implementierung, bei der die Schl\u00fcssel auf Enum-Konstanten beschr\u00e4nkt sind. Hier ist ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">EnumMap&lt;Wochentage, <span class=\"hljs-built_in\">String<\/span>&gt; aufgaben = <span class=\"hljs-keyword\">new<\/span> EnumMap&lt;&gt;(Wochentage.class);\n\naufgaben.put(Wochentage.MONTAG, <span class=\"hljs-string\">\"Team-Meeting\"<\/span>);\naufgaben.put(Wochentage.DIENSTAG, <span class=\"hljs-string\">\"Projektpr\u00fcfung\"<\/span>);\n\nSystem.out.println(<span class=\"hljs-string\">\"Aufgabe f\u00fcr Montag: \"<\/span> + aufgaben.get(Wochentage.MONTAG));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel verwenden wir eine EnumMap <code>aufgaben<\/code>, um Aufgaben f\u00fcr verschiedene Wochentage zu speichern und abzurufen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Unterschiede zu normalen HashSet und HashMap<\/h2>\n\n\n\n<p>Der Hauptunterschied zwischen EnumSet\/EnumMap und HashSet\/HashMap besteht darin, dass EnumSet und EnumMap auf Enums spezialisiert sind und dadurch effizienter und sicherer sind, da sie sicherstellen, dass nur g\u00fcltige Enum-Konstanten verwendet werden k\u00f6nnen. HashSet und HashMap sind allgemeine Sammlungsklassen, die mit beliebigen Objekten arbeiten k\u00f6nnen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Enums sind eine n\u00fctzliche Funktion in Java, um eine begrenzte Menge von konstanten Werten zu definieren und zu verwenden. Sie eignen sich gut f\u00fcr die Verwendung in <code>switch<\/code>-Statements, und Sie k\u00f6nnen ihnen auch eigene Attribute und Methoden hinzuf\u00fcgen. Wenn Sie mit Enums arbeiten, k\u00f6nnen EnumSet und EnumMap eine effiziente M\u00f6glichkeit bieten, Enum-Konstanten zu verwalten und zu verwenden. Es ist wichtig, die Unterschiede zwischen Enums und herk\u00f6mmlichen Sammlungen wie HashSet und HashMap zu verstehen, um die beste L\u00f6sung f\u00fcr Ihre spezifischen Anforderungen zu w\u00e4hlen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Enums, oder Aufz\u00e4hlungstypen, sind eine leistungsstarke Funktion in der Java-Programmiersprache, die es Entwicklern erm\u00f6glicht, eine begrenzte Menge von konstanten Werten zu definieren. Enums bieten eine elegante M\u00f6glichkeit, verschiedene Konstanten zu gruppieren und sie in Ihrem Code zu verwenden. In diesem Artikel werden wir die Grundlagen der Erstellung von Enums in Java, ihre Verwendung in switch-Statements, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-116","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=116"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/116\/revisions"}],"predecessor-version":[{"id":117,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/116\/revisions\/117"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}