2012-04-04 18 views

Respuesta

19

sí, también puede crear varios bloques de inicialización.

Esto le permite colocar el código con la cosa inicializada.

private static final Map<String, String> map; 
static { 
    // complex code to initialise map 
} 

private static final DbConnection conn; 
static { 
    // handle any exceptions and initialise conn 
} 
3

Puede definir múltiples bloques estáticos. Pero no creo que sea realmente necesario. Pero si define, se ejecutarán secuencialmente. me refiero a que el bloque estático definido primero se ejecutará primero y el próximo bloque se ejecutará a continuación.

2

Sí. Es posible definir múltiples bloques estáticos en una clase java. Ayuda en la modularización de su código de inicialización, lo que a su vez ayuda a una mejor comprensión y naturaleza legible del código (como se menciona en peter).

4
public class TryInitialisation { 
static int[] values = new int[10]; 
static{ 
    System.out.println("running initialisation block"); 
    for (int i=0; i< values.length; i++) 
     values[i] = (int) (100.0 * i); 
} 
static{ 
    System.out.println("running initialisation block"); 
    for (int i=0; i< values.length; i++) 
     values[i] = (int) (200.0 * i); 
} 
static{ 
    System.out.println("running initialisation block"); 
    for (int i=0; i< values.length; i++) 
     values[i] = (int) (300.0 * i); 
} 
void listValues(){ 
    for (int i=0; i<values.length; i++) 
     System.out.println(" " + values[i]); 
} 
public static void main(String[] args) { 

TryInitialisation example = new TryInitialisation(); 
example.listValues(); 
example = new TryInitialisation(); // referencing a new object of same type 
example.listValues(); 
} 

} 

Aquí está la salida:

running initialisation block 
running initialisation block 
running initialisation block 
0 
300 
600 
900 
1200 
1500 
1800 
2100 
2400 
2700 
0 
300 
600 
900 
1200 
1500 
1800 
2100 
2400 
2700 
Cuestiones relacionadas