» »

java - konstante

java - konstante

Zzzzzzz ::

Torej, imam majčken problemček s konstantami v javi. In sicer naj razložim kar na primeru:
class Razred {
static final int IZBIRA_1 = 120, IZBIRA_2 = 300, IZBIRA_3 = 450;

void Procedura(int izbira) {
switch(izbira) {
case this.IZBIRA_1:
// do sth.
break;
case this.IZBIRA_2:
// do sth.
break;
case this.IZBIRA_3:
// do sth.
break;
}
}
}


Problem tle je, da "case" zahteva konstantno vrednost in mu jo v bistvu dam, ampak on to razume kot spremenljivko.
Kako bi se dalo to rešit da bi mi zgornja koda delala b.p. ne da bi mi treba pisat konstante znova in znova? Ker jih uporabljam na več mestih in če jih bo treba kdaj spreminjat bo kr nerodno vse skupaj.

ElectricMan ::

pri case ne uprabljaj ukaz this.

stefanc ::

Očitno prevajalnik zmede this.IZBIRA_1.
Uporabi rajši Razred.IZBIRA_1. (tako je tudi priporočen način dostopanja do statičnih polj).
Načeloma je prevajalniku vseeno (pri this.IZBIRA_1 bi dobil warning), zgleda pa (ugibam) da če napišeš this.IZBIRA_1, tega ne prevede kot konstantno vrednost ampak kot sklic, kar pa ni dobro za switch stavek.

Drugi način pa je da konstante daš v svoj interface:

public interface Konstante
{
public static final int IZBIRA_1 = 120, IZBIRA_2 = 300, IZBIRA_3 = 450;
}


razred pa napišeš takole:

class Razred implements Konstante
{

public void test()
{

int izbira = IZBIRA_1;
switch (izbira)
{

case IZBIRA_1 :

// do sth.

break;

case IZBIRA_2 :

// do sth.

break;

case Konstante.IZBIRA_3 :

// do sth.

break;

}

}

}

Do konstant lahko potem dostopaš z Konstante.IZBIRA_3 ali pa samo IZBIRA_3.
Konstante pa imaš zbrane tematsko v različnih interfacih, v definiciji razreda pa takoj vidiš katere uporablja.

Zzzzzzz ::

stefanc, najlepša hvala. Tvoj način je odličen - zelo modularen.

Še tole: A lahko isti razred uporablja več interfaceov (npr. public class Razred implements A, B, C {})?

Zgodovina sprememb…

  • spremenil: Zzzzzzz ()

stefanc ::

Ja, lahko.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] Problem s Scanner-jem

Oddelek: Programiranje
92442 (2236) Zlatan
»

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81648 (1593) Cvenemir
»

c sharp LinkedList - Naloga

Oddelek: Programiranje
91841 (1792) Msatir
»

[C] čuden izpis iz txt dat. na zaslon

Oddelek: Programiranje
121660 (1397) l0g1t3ch
»

Java problemček

Oddelek: Programiranje
141440 (1233) Imortales

Več podobnih tem