tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
13694
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Gismo Gismo ist offline Mitglied
    Registriert seit
    Jun 2003
    Ort
    Hombrechtikon (CH Kt.ZH)
    Beiträge
    19
    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
     

  2. #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ß Tom
     
    Java 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

  3. #3
    Gismo Gismo ist offline Mitglied
    Registriert seit
    Jun 2003
    Ort
    Hombrechtikon (CH Kt.ZH)
    Beiträge
    19
    Ach ja, wunderbar! Jetzt tuts bei mir auch.

    Danke!
     

Ähnliche Themen

  1. ENUM mit SWITCH "Jahreszeiten"
    Von Marsik im Forum Java Grundlagen
    Antworten: 5
    Letzter Beitrag: 26.01.09, 16:07
  2. Anfängerproblem: JavaScript startet nicht auf "Knopf-Druck"
    Von Lautsprecher im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 09.11.08, 15:16
  3. Antworten: 4
    Letzter Beitrag: 07.03.08, 12:51
  4. Frage zu "switch"+"include"
    Von NemoFinder im Forum PHP
    Antworten: 23
    Letzter Beitrag: 04.10.05, 00:54
  5. Vorsicht beim "Enum-Pattern"!
    Von Thomas Darimont im Forum Java
    Antworten: 0
    Letzter Beitrag: 21.12.04, 11:57