Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
enum op {add, sub, mult, div };
private final int cmdOffset = 1000;
private final int addId = cmdOffset+op.add.ordinal();
private final int subId = cmdOffset+2;
private void test(int id){
switch(id) {
case addId: // ->> Kompilationsfehler addId muss konstant sein
case subId: // das ist dann ok
...
Also das Fragezeichen hat auf dem Bildschirm keinen Platz - der zugeordnete Wert von "add" ist ja wirklich konstant.
Kann ich irgendwie aus
id-cmdOffset
auf den enum kommen? Ich hab das Gegenteil von ordinal() allerdings nirgens gefunden.
Wie wenn die Schreibweise auf das Laufzeitverhalten eine Auswirkung hätte. Aus irgend einem Grund habe ich hier Codereviews eingeführt - wenn das der echte Code währe würde der später schon noch durch meine "Codiermonster" verschönert
> Wie wenn die Schreibweise auf das Laufzeitverhalten eine Auswirkung hätte.
wen interessiert das Laufzeitverhalten?,
die Schreibweise hat Auswirkungen auf die Menschen die es lesen, zum Beispiel hier im Forum dir helfen sollen,
wenn das nix zählt..
Im Prinzip nein, enums werden intern wohl auch in Klassen übersetzt, aber speziell behandelt. enums werden diesbezüglich anders behandelt als Klassen. enums können, sofern ich mich jetzt nicht irre, von anderen enums erben, Klassen von enums oder enums von Klassen jedoch nicht.
Intern sehen enums in etwa folgendermaßen aus:
Java:
enum Foo {
bar;
}
/* daraus wird (in etwa) */
public class Foo extends Enum {
public static Foo bar = Foo();
}
Class c = String.class;
Class c = Blabla.class; // geht genauso
Blabla.xy(); // klare statische Methode, an einer Klasse aufgerufen
blabla.yz(); // klare nicht-statische Methode an einer Variablen aufgerufen
wenn man Variablen groß und Klassen klein schreibt, geht alles durcheinander,
int & Co. sind egal, dort gibt es keine Methoden und die werden normalerweise eh anders dargestellt,
selbst hier im Forum in Java-Tags