ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
13694
13694
EMPFEHLEN
-
Hallo
Ich hab leider noch nicht viel Erfahrung mit Java. Mein Fehler ist für einen erfahrenen Programmierer vermutlich sehr simpel zu lösen
Ich hab folgendes Problem: 2Klassen, wobei eine nichts weiter als die "enum"-Funktion von C++ darstellt. (Das Programm ist für eine Arbeit. Die enum-Funktion von Java5 kann nicht verwendet werden).
In einer weiteren Klasse habe ich eine switch-Funktion, wobei die "case-auswahl" Memervariabeld des enum's sind. Also im Prinzip sowas:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
public final class States { public static final int IDLE = 0; public static final int R = 1; public static final int S = 2; } //--------------------------------------------------------------------- public class Switch{ ... private static final States STATUS = new States(); private static int value = STATUS.R; ... switch (value) { case STATUS.IDLE: break; case STATUS.R: break; default: break; } ... }
Ich erhalte beim compilieren immer folgenden Fehler:
Switch.java:102:constant expression required
case STATUS.IDLE
...
...
Ist das überhaupt möglich wie ich es machen will?! STATUS.IDLE müsste doch konstant sein?!
Wäre toll wenn mir da einer kurz helfen könnte! Ich finde einfach nirgends was ich falsch mache
-
23.01.05 13:35 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Du greifst über eine Referenz auf eine Klassenvariable zu. Diese Referenz könnte sich jedoch im laufe des Programms ändern und damit wäre die Regel für Konstante Ausdrücke innerhalb des switch Statements verletzt.
Du musst über die Klasse States auf die Klassenvariablen IDLE,R,S zugreifen, dann funktionierts.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/* * Created on 23.01.2005@13:26:40 * * TODO Explain me... */ package de.tutorials; /** * @author Darimont * */ public class States { public final static int IDLE = 0; public final static int R = 1; public final static int S = 2; }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
/* * Created on 23.01.2005@13:29:05 * * TODO Explain me... */ package de.tutorials; /** * @author Darimont * */ public class SwitchTest { public static void main(String[] args) { int i = 2; switch (i) { case States.IDLE: { System.out.println("IDLE"); } break; case States.R: { System.out.println("R"); } break; case States.S: { System.out.println("S"); } break; default: { System.out.println("default"); } } } }
HTH,
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Ach ja, wunderbar! Jetzt tuts bei mir auch.
Danke!
Ähnliche Themen
-
ENUM mit SWITCH "Jahreszeiten"
Von Marsik im Forum Java GrundlagenAntworten: 5Letzter Beitrag: 26.01.09, 16:07 -
Anfängerproblem: JavaScript startet nicht auf "Knopf-Druck"
Von Lautsprecher im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 09.11.08, 15:16 -
"static" Schlüsselwort bei einem Enum innerhalb einer Klasse?
Von DarthShader im Forum JavaAntworten: 4Letzter Beitrag: 07.03.08, 12:51 -
Frage zu "switch"+"include"
Von NemoFinder im Forum PHPAntworten: 23Letzter Beitrag: 04.10.05, 00:54 -
Vorsicht beim "Enum-Pattern"!
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 21.12.04, 11:57





Zitieren

Login





