Vererbung mit Enums

Macklaire

Mitglied
Hallo,

Ich bin noch Anfänger und hätte da mal ne Frage an euch.

Ich habe 2 Enums vorgegeben, welche jeweils eine HashMap beinhalten. Dort sind mehrere Einträge mit ID und jeweiligen String enthalten.
Enum 1 z.B.: GRUEN("48", "Grün");
Enum 2 z.B.: WECHSLEZUGRUEN("13", "Wechsle zu Grün");

Nun soll ich mit Hilfe von Vererbung einen Statuswechsel programmieren. Von Gelb eben zum Beispiel auf Grün.

Zu meiner Frage. Kann mir irgenwer erklären, wie ich aus einer anderern Klasse darauf zugreifen oder die abrufen kann? Bzw müsste es ja aus einem Interface sein, da enums nicht erben/vererben können, wenn es sich um normale Klassen handelt, falls ich das so richtig verstanden habe.
 
K

kneitzel

Gast
a) Ein erneutes Posten empfinde ich zumindest als aufdringlich. Du hast doch vor noch nicht einmal 4 Stunden genau das schon einmal gepostet!
b) Das was Du schreibst ist zumindest für mich unverständlich.

Evtl. gibst Du uns die exakten Details: Was für Enums sind genau gegeben? Sind das unterschiedliche Enums ("2 Enums gegeben") oder ist es ein Enum und das sind zwei Werte?

Was ist denn genau von der Aufgabe verlangt? Bitte die genaue Aufgabe schreiben, dann ist die Chance größer, dass wir verstehen, was gefordert ist.
Und Zugriff auf ein Enum erfolgt ja aus Code. In einem Interface wäre dies eine default Implementation, aber die will man in erster Linie nicht haben. Somit wäre das ggf. doch eher ein Zugriff aus einer Klasse.
 

Macklaire

Mitglied
Zu a) Da ich neu relativ neu auf der Seite bin, war ich mir nicht sicher, ob das das richtige Forum ist. Dass es dann das selbe im Endeffekt war und dass man es nicht löschen kann, ist mir erst im Nachhinein aufgefallen. Sry dafür.

Zu b) Es handelt sich um 2 Enums. Das eine mit VorgangsStatus und das andere mit VorgangsAktionen.

Hier jzt mal Der VorgansStatus. Also welcher Status mir im Programm angezeigt werden soll im Endeffekt:

Code:
import java.util.*

public enum VorgangsStatus {

    VORSCHLAG_IN_ARBEIT("1", "Vorschlag in Arbeit"),
    ANTRAG_IN_ARBEIT("2", "Antrag in Arbeit"),
    ANTRAG_VOLLSTAENDIG("3", "Antrag vollständig"),
    ANTRAG_VERSANDFERTIG("4", "Antrag versandfertig"),
    ANTRAGSVERSAND_UNTERBROCHEN("5", "Antragsversand unterbrochen");
usw...

    /** Endzustände nach manueller Umsetzung des Status */
    public static final Set<String> MOEGLICHE_ENDSTATUS_ANTRAG =
            Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(//
                ANTRAG_POLICIERT.getKey(), //
                ANTRAG_ABGELEHNT.getKey(), //
                ANTRAG_STORNIERT.getKey())));

    /** Mapping von statusCd zum entsprechenden Enum */
    private static final Map<String, VorgangsStatus> KEY_TO_VALUE = new HashMap<String, VorgangsStatus>();

    /** StatusCode */
    private final String statusCd;

    /** Status */
    private final String status;

    static {
        for (VorgangsStatus vga : values()) {
            KEY_TO_VALUE.put(vga.statusCd, vga);
        }
    }

    private VorgangsStatus(String pStatusCd, String pStatus) {
        statusCd = pStatusCd;
        status = pStatus;
    }

    public static VorgangsStatus getValue(String pStatusCd) {
        return pStatusCd == null ? EMPTY : KEY_TO_VALUE.get(pStatusCd);
    }

    }

    /**
     * liefert den StatusCode
     *
     * @return StatusCode
     */
    public String getKey() {
        return statusCd;
    }

Und hier eben die Statusübergänge:

Code:
import java.util.*

public enum VorgangsAktion {

    ANTRAG_VERSENDET("1", "Antragsversand"),
    ANTRAG_FREIGEGEBEN("2", "Antragsfreigabe"),
    ANTRAG_ABGELEHNT("3", "Antragsablehnung"),
    VORSCHLAGSERSTELLUNG("4", "Vorschlagserstellung"),
    ANTRAGSERSTELLUNG("5", "Antragserstellung"),
  usw...

    /** Mapping von aktionCd zum entsprechenden Enum */
    private static final Map<String, VorgangsAktion> KEY_TO_VALUE = new HashMap<String, VorgangsAktion>();

    /** Aktionscode */
    private final String aktionCd;

    /** Aktion */
    private final String aktion;

    static {
        for (VorgangsAktion vga : values()) {
            KEY_TO_VALUE.put(vga.aktionCd, vga);
        }
    }

    /** zugeordneter Status */

    /**
     * Konstruktor
     *
     * @param pAktionCd
     *            Aktionscode
     * @param pAktion
     *            Aktion
     * @param pAktionVerhalten
     *            Weitere Eigenschaften der Aktion
     */
    private VorgangsAktion(String pAktionCd, String pAktion) {
        this.aktionCd = pAktionCd;
        this.aktion = pAktion;
    }

    /**
     * liefert eine Enum-Konstante zu einem Aktionscode
     *
     * @param pAktionCd
     *            Aktionscode
     * @return Enum
     */
    public static VorgangsAktion getValue(String pAktionCd) {
        return pAktionCd == null ? EMPTY : KEY_TO_VALUE.get(pAktionCd);
    }

    /**
     * lefert die Aktion
     *
     * @return die Aktion
     */
    public String getText() {
        return aktion;
    }

    /**
     * liefert den Aktionscode
     *
     * @return Aktionscode
     */
    public String getKey() {
        return aktionCd;
    }
}

Meine Frage jetzt nochmal. Wie kann ich nun Elemente aus diesem Enum aufrufen bzw meine Klasse oder eben das Interface davon erben lassen?

Ich hoffe das war etwas verständlicher.

MfG
 
K

kneitzel

Gast
Erst einmal Danke für die Ausführungen bezüglich Deiner Enums.

Was Du genau möchtest, verstehe ich immer noch nicht. Von Enums kannst du nicht erben, da diese final sind. Aber nutzen kannst Du es in deinem Code z.B. mit
VorgangsStatus.VORSCHLAG_IN_ARBEIT

Und darauf kannst Du auch die definierten Methoden aufrufen, also z.B.
VorgangsStatus.VORSCHLAG_IN_ARBEIT.getKey()

Und Du kannst auf dein KEY_TO_VALUE verzichten. (Btw: Das wäre auch nur eine normale statische Instanzvariable und da würde dann auch camelCase verwendet, also wäre der Name eher keyToValue.)

Den Code
Code:
    public static VorgangsAktion getValue(String pAktionCd) {
        return pAktionCd == null ? EMPTY : KEY_TO_VALUE.get(pAktionCd);
    }
würde ich eher ersetzen durch etwas wie
Code:
    public static VorgangsAktion getValue(String pAktionCd) {
        for (VorgangsAktion value: values()) {
            if (value.getKey().equals(pAktionCd)) return value;
        }
        return EMPTY;
    }

Das spart die HashMap. HashMap braucht halt deutlich mehr Speicher. Der Zugriff von O(n) vs. O(1) wird hoffentlich nicht ins Gewicht fallen, denn deine Enum wird ja hoffentlich nicht zu viele Werte haben ...
 
K

kneitzel

Gast
statische Instanzvariable? :p
Ja, wenn man schnell schreibt und nicht kontrolliert.... :)

Da musste ich jetzt auch lachen ... ist noch besser als vor ein paar Monaten die Rechts/Links Schwäche, als ich der Meinung war, dass Ausdrücke von Rechts nach Links ausgewertet wurden und bei dem ersten Hinweis nicht mal verstand, was gemeint war :)

Aber laut Rentenkasse passiert mir das noch nicht oft genug um in Rente gehe zu dürfen ;)
 

Barista

Top Contributor
Meine Frage jetzt nochmal. Wie kann ich nun Elemente aus diesem Enum aufrufen bzw meine Klasse oder eben das Interface davon erben lassen?

Ich hoffe das war etwas verständlicher.

Ich habe den Eindruck, Du (oder Dein Auftraggeber, ist scheinbar eine Übungs-/Test-Aufgabe) versteifst Dich auf die Lösungsmöglichkeit 'erben' statt über das zu lösende Problem nachzudenken.

Wahrscheinlich gibt es eine fachliche Entität(Vorschlag/Antrag (hier geht die Begrifflichkeit bereits etwas durcheinander)), die auf dem Bildschirm angezeigt wird.

Dabei gibt es eine Selectbox, Links, Buttons oder so mit den möglichen Zielzuständen.

Nicht mögliche/erlaubte Zielstatus/Übergangsaktionen werden nicht oder inaktiv angezeigt.

Wird Zielstatus/Übergangsaktion ausgewählt, muss geprüft werden, ob dies erlaubt ist.

Am Ende wird der Status geändert und der Bildschirm aktualisiert.
 

Macklaire

Mitglied
Vielen Dank, für die schnelle Rückmeldung. Es ging mir im wesentlichen darum, wie ich diese Status außerhalb des Enums au8frufen kann. Ich habs mit eurer Hilfe jetzt geschafft. Aslo vielen Dank.

MfG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben