mam final class Ring
zdefiniowany jako:Przypadki wyrażeń muszą być wyrażeniami stałymi dla statycznego ostatecznego int?
final class Ring {
public static final int OUT = 3;
public static final int MID = 2;
public static final int IN = 1;
}
również mieć public class MorrisBoard
następującym kodem:
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
odniesienia zmienną, która jest stała w czasie trwania programu. Wszystkie wartości są ostateczne.
Jednak nadal pojawia się następujący błąd: case expressions must be constant expressions
. Jestem zdezorientowany tym - MorrisBoard.RING.OUT
jest wyrażeniem stałym.
Co się tutaj dzieje?
To musi być stała czasowa _kompilacji_, a "RING" nie jest, jest przypisana w czasie wykonywania. –
FYI: Rozważ użycie 'wyliczenia' zamiast pęczka' ostatecznego statycznego' ... –
Nie ma potrzeby tworzenia instancji klasy, która nie ma żadnych członków instancji, tj. Tylko statycznych członków –