Ho un final class Ring
definito come:Le espressioni di caso devono essere espressioni costanti per static final int?
final class Ring {
public static final int OUT = 3;
public static final int MID = 2;
public static final int IN = 1;
}
Ho anche un public class MorrisBoard
con il seguente codice:
public class MorrisBoard {
public static final Ring RING = new Ring();
private boolean checkMillBy(int ring, int x, int y) {
switch(ring) {
case MorrisBoard.RING.OUT:
//...
case MorrisBoard.RING.MID: //etc.
//...
}
return false;
}
MorrisBoard.RING.OUT
riferimenti una variabile che è immutabile per tutta la durata del programma. Tutti i valori sono definitivi
Tuttavia, ho ancora il seguente errore: case expressions must be constant expressions
. Sono confuso da questo - MorrisBoard.RING.OUT
è un'espressione costante.
Cosa sta succedendo qui?
Si deve essere una costante di tempo _compile_ e 'RING' no, è assegnata in fase di runtime. –
Nota: si consideri l'uso di un 'enum' invece di un gruppo di' statico finale' ... –
Non è necessario creare un'istanza di una classe che non ha membri di istanze, ovvero solo membri statici –