È necessario rendere statico final static
o rimuovere static
.
In Java, static significa che è una variabile/metodo di una classe, appartiene all'intera classe ma non a uno dei suoi determinati oggetti. Ciò significa che la parola chiave static può essere utilizzata solo in un "scope di classe".
Generalmente, in C, è possibile disporre di variabili con ambito locale allocate in modo statico. Sfortunatamente questo non è direttamente supportato in Java. Ma puoi ottenere lo stesso effetto usando le classi annidate.
Ad esempio, è consentito quanto segue, ma è una cattiva progettazione, poiché l'ambito di x è molto più grande di quanto non debba essere. Inoltre esiste una dipendenza non ovvia tra due membri (x e getNextValue).
static int x = 42;
public static int getNextValue() {
return ++x;
}
Si vorrebbe veramente fare quanto segue, ma non è legale:
public static int getNextValue() {
static int x = 42; // not legal :-(
return ++x;
}
Tuttavia si potrebbe fare questo, invece,
public static class getNext {
static int x = 42;
public static int value() {
return ++x;
}
}
E 'meglio di ingegneria, a scapito di un po 'di bruttezza.
fonte
2014-06-17 17:00:34
Perché farlo avrebbe senso? Quando si parla di variabili che sono solo nell'ambito del corpo del metodo, non ha senso dire che sono "di classe". – awksp
Perché non è sensato e/o ridondante al meglio. –
@ user3580294 Sto cercando di dichiarare una variabile (questo codice non reale) all'interno di un ciclo statico in modo che il suo valore non cambi mai con l'iterazione successiva. – YakRangi