# Enum in Java



## JavaAPP (4. Sep 2004)

Wie setze ich den folgenden Code in Java um?




```
In C sieht das so aus: 
            enum richtungen {O,SO,SW,W,NW,NO}; 
            char* bezeichner [6] = {"O" ,"SO" ,"SW" ,"W" , "NW" , "NO"};
```

Die Richtungen werden mit Hilfe des Enumerationsdatentyps richtungen mit Zahlen von 0 bis 5 identifiziert. Die Richtungsnamen sind im Array bezeichner angelegt. 

Wie muss man so etwas in Java umsetzen und wofür ist ein Enumerationsdatentyp gut, oder welche Aufgabe hat es?


----------



## JavaAPP (4. Sep 2004)

Ich habe noch JAVA 1.4.2! Das Thema war an der Richtigen Stelle!


----------



## DesertFox (4. Sep 2004)

Enums gibt es doch erst seit Java 1.5 so viel ich weis  ???:L


----------



## bygones (4. Sep 2004)

Enums an sich gibt es erst ab 1.5 - du kannst aber public (bzw. protected oder private) Konstanten in einer Klasse definieren...

also z.b. 

```
public abstract class Directions {
  public static final int OST = 0;
  public static final int WEST = 1;
  public static final int NORTH = 2;
  public static final int SOUTH = 3;
}
```
dann kannst du im Code darauf zugreifen:

```
Directions.OST;
```


----------



## JavaAPP (4. Sep 2004)

Danke für die Information!

Wie könnte ich das jetzt noch mit dem char-Array machen?


----------



## Beni (4. Sep 2004)

Ich versteh ehrlich gesagt nicht ganz, wie das mit dem String-Array (char = Einzelzeichen, String = Text. Du benötigst wenn schon dann String) gemeint ist? Soll das eine Übersetzung von den Integern zu Text sein oder wie oder was? :bahnhof:


----------



## Guest (4. Sep 2004)

Ja, muss die Richtungen (OST, Süd-OST ...) in ein Array reinbekommen.


----------



## bygones (5. Sep 2004)

Anonymous hat gesagt.:
			
		

> Ja, muss die Richtungen (OST, Süd-OST ...) in ein Array reinbekommen.


versteh zwar nicht warum sie in einen Array müssen, aber geht natürlich auch:
z.b. als Strings

```
public static final String SOUTH = "SOUTH";
publis static final String NORTH = "NORTH";
....
public static final String[] DIRECTIONS = {SOUTH, NORTH};
```
oder über int zugriff:

```
public static final int SOUTH = 0;
public static final int NORTH = 1;
.....
public static final int[] DIRECTIONS = {SOUTH, NORTH};
```
[/code]


----------



## Guest (5. Sep 2004)

Danke, hat funktioniert!


----------



## Anonymos (8. Sep 2004)




----------



## bygones (8. Sep 2004)

nein haben sie nicht... Das Interface Enumeration diente dazu durch sequenziell durch eine Collection zu laufen. 

Das Feature Enum ist ein komplette unterschiedlicher Ansatz und Idee


----------



## Bleiglanz (9. Sep 2004)

richtige Lösung für 1.4 ist in http://developer.java.sun.com/developer/Books/effectivejava/Chapter5.pdf
beschrieben


```
// The typesafe enum pattern 
public class Suit { 
private final String name; 
private Suit(String name) { this.name = name; } 
public String toString() { return name; } 
public static final Suit CLUBS = new Suit("clubs");
public static final Suit DIAMONDS = new Suit("diamonds");
public static final Suit HEARTS = new Suit("hearts"); 
public static final Suit SPADES = new Suit("spades"); }
```

kann man dann z.B. mit Suit.CLUBS benutzen...


----------



## Hase (21. Okt 2004)

Generics, enum....
Da scheint jemand eine gewise andere Sprache, die unter Java-Programmierern nicht unbedingt als besser angesehen wird, kopieren zu wollen.  Wenn sie bald den Scope-Operator :: einführen, könnt ihr gleich alle kompilieren und friends erstellen.
Sollte Java nicht eine eigenständige Sprache sein?

Für die Freunde des weniger subitlen Stils: Generics & enums sind eigentlich C++ Dinge, die lange vorher existierten,


----------



## bygones (21. Okt 2004)

was soll denn der Uninn Hase ??
1. behauptet keiner hier, dass Java besser ist als C++
2. warum soll sich eine Sprache nicht entwickeln können

Soll man so engstirnig sein und sagen: Ich gut alle schlecht ? sorry das ist unsinn...

außerdem gabs vor C++ nicht mal C ?


----------



## hase (22. Okt 2004)

Nein, Da hast du mich falsch verstanden. Natürlich kann man keine Programmiersprachen wertung aufstellen. Aber meiner Meinung nach geht es sehr in C++ Richtung, und Java sollte nicht an andere Sprachen angepasst werden. Mit dem Satz "von Programmierern nicht unbedingt als besser angesehen" meine ich, dass jemand, der Java programmiert, zwar nicht C++ zwingend gut oder schlecht finden muss, aber er hätte ja auch C++ lernen können.  Wenn man Java daran angleicht, sieht es ein wenig danach aus, als sei C++ von Anfang an besser gewesen.  Aber vielleicht sehe ich da ja auch nur Gespenster......


----------



## hase(nachtrag) (22. Okt 2004)

deathbyaclown hat gesagt.:
			
		

> außerdem gabs vor C++ nicht mal C ?


ist zwar nebensächlich, aber C++ ist eine andere Sprache, die lediglich auf C basiert.  Java 1.5 ist ja eine Erweiterung


----------



## Calamitous (25. Okt 2004)

> außerdem gabs vor C++ nicht mal C ?



also soviel ich informiert bin gabs C vor C++. Das ganze war aber noch nicht Objektorientiert. nix vererbung, usw... 
und ein paar (warens 2?) habens halt verbessert und die verbesserung durch ein "++" angedeutet was ja soviel wie "+1" bedeutet (wahrscheinlich wollten sie kein 'D' weil 'C'+1 wäre ja 'D')



> Java 1.5 ist ja eine Erweiterung


Java1.5 bzw Java5 (wie auch immer) ist eine Erweiterung bezüglich des Frameworks (mehr Klasse, etc...)
aber auch(!) von der Sprache an sich (Generics, ...).


----------



## Tobias (27. Okt 2004)

Mal diese unsinnige Diskussion über C und Java beiseite lassend: Kann mir jemand ein praxisbezogenes Beispiel nennen, wo ich für Enum-Konstanten Verhalten (also Methoden) benötige?

mpG
Tobias


----------



## 0xdeadbeef (27. Okt 2004)

Hä?

Falls diese Frage (?) bedeuten soll, daß Du wissen willst, wie Enums denn nun eingesetzt werden, empfehle ich Dir diese Seite:

http://www.galileocomputing.de/artikel/gp/artikelID-152

Kapitel 1.4 behandelt Enums.

Auch lesenswert:
http://www.galileocomputing.de/download/dateien/611/enumerationen_java.pdf


----------



## thE_29 (27. Okt 2004)

[offtopic]nur so nebenbei!

Die Erfinder von C waren die Unix Typen (Ken Thompson, Dennis Ritchie und Brian Kernigham ~1973 wobei Ritchie das meiste machte)

Und der Erfinder von C++ war "Bjarne Stroustrup" ~1983[/offtopic]


----------

