Går det inte att ha en static int i case-satsen?
Jag har en klass som innehåller en massa static int för att status på klassen.
nu vill jag kolla vilken status ett objekt har i en switch-sats
class test
{
static int status_new = 1;
static int status_old = 2;
.
.
.
}
...
test o = new test();
switch(o.status)
{
case test.status_new:
...
break;
case test.status_old:
...
break;
}
gör jag så här så får jag kompileringsfel. Felmeddelandet lyder: "Ett konstantvärde förväntas"
vet att det inte är helt korrekt kod men principen är iaf där.
En staticdeklarerad klassvariabel är inte konstant. Static betyder att den "spänner över alla instanser av klassen". Använd const istället.
Red;
För att förtydliga keywordet "static". Nånting som är static tillhör klassen och inte en instans av klassen. Deklarerar du en variabel static i en klass och ändrar värdet på den i en instans av klassen så är den även ändrad i andra instanser av klassen just för att den tillhör typen och inte instanserna.
Keywordet const används för att deklarera någonting som konstant och oföränderligt.
Det är inte bara variabler som kan vara const eller static utan även t.ex. metoder och klasser.