2011-11-10 16 views

Respuesta

5

Este es el bloque de código que conseguirá invoca cuando la clase se carga mediante cargador de clases

+0

Gracias Joshi. En realidad, quiero traducir este código a C++. ¿Podrías explicarme cómo puedo hacer esto? –

+1

@sufyansiddique: Debería surgir una nueva pregunta. –

+0

¿Qué hay en C++ que se ejecuta cuando se carga la clase simplemente coloca el bloque de código simplemente –

1

Esto se llama un bloque de inicialización estática y se ejecutará una vez, cuando esta clase se carga.

5

Este es un bloque de inicializador estático. Debes haberlo encontrado en el cuerpo de una clase fuera de cualquier método. El bloque de inicio estático solo se ejecuta una vez para cada clase, en el tiempo de carga de clases.

16

Este es un bloque de inicialización estático. Piense en ello como una versión estática del constructor. Los constructores se ejecutan cuando se crea una instancia de la clase; los bloques de inicialización estáticos se ejecutan cuando la clase se carga.

Puede usarlos para algo como esto (código obviamente fabricado):

private static int myInt; 

static { 
    MyResource myResource = new MyResource(); 
    myInt = myResource.getIntegerValue(); 
    myResource.close(); 
} 

Consulte la sección "estáticas de inicialización Bloques" del Oracle's tutorial on initializing fields.

+0

Gracias Jonathan. –

1

Sufyan,

inicializadores estáticos no se heredan y sólo se ejecuta una vez cuando se carga y se inicializa por la JRE la clase. Eso significa que este bloque estático se inicializará una sola vez independientemente de la cantidad de objetos que haya creado fuera de esta clase.

No soy un gran admirador de eso y estoy seguro de que existen mejores alternativas según la situación.

Gracias, Rojos

1

Esta sintaxis se ha quedado anticuado como de Java 7. Ahora el equivalente es:

public static void main(String[] args) { 
    /* 
     stuff 
    */ 
} 
Cuestiones relacionadas