Compilando
ed eseguendo le due classi abbiamo infatti la stampa di 1 e 2:
prompt> javac Costanti.java Main.java
prompt> java Main
A=1 B=2
prompt>
Se
però cambiamo il valore delle due costanti:
// Costanti.java
class Costanti
{
static
final int A = 3;
static
final int B;
static
{
B = 4;
}
}
e ricompiliamo
la classe modificata e rieseguiamo il Main cosa verrà stampato?
prompt> javac Costanti.java
prompt> java Main
A=? B=?
prompt>
Qual'è
il modo corretto di inizializzare il valore delle nostre costanti?
In quali
casi si inizializza la costante nella stessa dichiarazione?
Quando
invece è bene inizializzare la costante in un blocco statico?
Se per
esempio una costante è utilizzata per controllare il livello di
trace della nostra applicazione, è corretto inizializzarla con quale
dei due modi?
// Costanti.java
class Costanti
{
static
final int debugLevelA = 3;
static
final int debugLevelB;
static
{
debugLevelB = 3;
}
}
Siamo
sicuri che i seguenti frammenti di codice facciano quello che ci aspettiamo?
// Main.java
// ...omissis...
if (Costanti.debugLevelA > 1)
System.out.println("Warning A");
// ...omissis...
if (Costanti.debugLevelB > 1)
System.out.println("Warning B");
// ...omissis...