Java Auzählung mit enum - Zugriff von anderer Klasse

king0r

Lt. Junior Grade
Registriert
Juli 2009
Beiträge
485
Hallo,

mal wieder ne Anfängerfrage ;)

Ich habe momentan 3 Klassen. Eine Klasse soll ausschliesslich dazu dienen, bestimmte Aufzählungstypen bereitzustellen.

Mal ein Beispielcode:

Code:
public class Color {
enum Color {Red, Green, Blue, Yellow}
}

So, jetzt mecker taber Eclipse dauernd mit folgender Meldung rum:
The nested Type Color canno hide an enclosing type.

Leider sagt mir diese Fehlermeldung gar nichts?
Sofern ich die enum Anweisung in
Code:
public class Color {
enum Color[B]s[/B] {Red, Green, Blue, Yellow}
}
umändere würde es ja funktionieren. Aber ich muss ja auch aus anderen Klassen darauf zugreifen können über Color.Red etc.

Kann mir bitte jemand sagen wie ich den enum aus anderen Klassen aufrufen kann?

Danke!
 
Wenn es um Aufzählungen geht und du kannst /darfst JAVA 1.5+ nutzen, dann ist dies die Qual der Wahl:

public enum ArticleCategory {

FUSSBALL,
TISCHTENNIS,
HANDBALL

}

-- und fertig!

Mit Java 1.4 geht das mit Strings als constanten in einer entspr. Klasse und private Constructor rein...
 
The nested Type Color canno hide an enclosing type.
Das heißt die Member der Klasse dürfen nicht den selben Namen wie die Klasse selbst haben, weil der Einschließende Typ sonst ausgeblendet werden würde.

So wie du das geschrieben hast müsstest du auf die Aufzählung so zugreifen:
Code:
Color.Color.Red
Das wäre natürlich Schwachsinn.

Also machs lieber so:
Code:
public static class Enums
{
       public enum Colors {Red, Green,Blue};
       public enum Cars {Audi, BMW, Mercedes, VW, Opel};
       public enum FootballClubs {FCBayernMuenchen, Bayer04Leverkusen, FCSchalke04, WerderBremen};
}

Und falls das nicht klappt so wie ich das geschrieben hab, dann hab ich zu meiner Verteidigung zu sagen: ich hab eigentlich garkeine Ahnung von Java, hab mal angenommen es verhält sich in Java auch nicht anders als in C#
 
Zuletzt bearbeitet: (Rechtschreibfehler)
Hy,

also wenn ich von einer anderen Klasse auf nen enum zugreifen will, geht das folgendermassen:
Klassenname.enumname.enumelement

??
 
Ja, genau so.
Aber die Umschließende Klasse muss als static deklariert sein, sonst musst du erst eine Instanz der Klasse erzeugen um auf die Member zugreifen zu können.
Außerdem muss der Enum als public deklariert werden, sonst kann man nur von innerhalb der umschließenden Klasse drauf zugreifen.
 
Hy,

hast du grad noch bissl Zeit? Hätte da noch ne Frage zu Referenzen. Am besten per ICQ etc.

Gruß
 
In Java gibt es keine statischen Klassen. Du müsstest die enums statisch deklarieren, aber das kannst du dir schenken, weil die implizit statisch sind. Ansonsten ist Klasse.Enum.Element schon ganz richtig. Allerdings recht hässlich, Colors.Color.Red ist wirklich nicht schön. Warum willst du die denn überhaupt in eine Klasse packen? Enums können auch außerhalb von Klassen definiert werden.

df
 
public static enum BillState {
CHECKED,

UNCHECKED,

PAYED;
}


aufrufbar in anderer Klasse über BillState.CHECKED;
 
Ok Danke jungs, also kann man den Klassennamen weg lassen, wenn ich mich gerade in ner anderne Klassen befinde, wo die enums nicht explizit deklariert sind?

Wer kennt sich denn von euch mit Referenzen aus? Müsste man kurz per ICQ klären, da des jetzt hier zu umständlich / umfangreich wäre.
 
dennoch ist ICQ besser wegen Copy & Paste ^^

hast du ICQ?
 

Ähnliche Themen

Zurück
Oben