6 votes

Java : qu'est-ce que static{} ?

Quelqu'un peut-il m'expliquer ce qui suit ?

public class Stuff
{
    static
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch ( ClassNotFoundException exception )
        {
            log.error( "ClassNotFoundException " + exception.getMessage( ) );
        }
...
}

Que fait ce fichier statique { ...} ?

Je connais les variables statiques en C++, mais s'agit-il d'un bloc statique ou autre chose ?

Quand ces mesures seront-elles exécutées ?

0voto

Thev Points 51

bloc d'initialisation statique

  • est un bloc de code normal

  • il est entouré d'accolades { }

  • il est précédé du mot-clé statique

    class Foo {
        static {
            // initialization code goes here:
            doSomething();
        }
    }
  • peut avoir un nombre quelconque de blocs d'initialisation statiques

  • ils peuvent apparaître n'importe où dans le corps de la classe

  • ils sont appelés dans l'ordre d'apparition dans le code

Il existe une alternative aux blocs d'initialisation statiques :

  • écrire une méthode statique privée
  • et l'assigner à la variable statique de la classe

L'avantage de cette approche est que la méthode statique peut être invoquée ultérieurement pour réinitialiser la variable de classe.

class Foo {
    public static int myVar = initializeClassVariable();

    private static int initializeClassVariable() {
        // initialization code goes here:
        int v = 255;
        return v;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X