Utilisation du mot-clef "static"
Bonjour,
j'ai une petite question sur cette structure
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public MyAppSqlConfig {
private static final SqlMapClient sqlMap;
static {
try {
String resource = com/ibatis/example/sqlMap-config.xml;
Reader reader = Resources.getResourceAsReader (resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
// If you get an error at this point, it doesnt matter what it was. It is going to be
// unrecoverable and we will want the app to blow up hard so we are aware of the
// problem. You should always log such errors and re-throw them in such a way that
// you can be made immediately aware of the problem.
e.printStackTrace();
throw new RuntimeException (Error initializing MyAppSqlConfig class. Cause: + e);
}
}
public static SqlMapClient getSqlMapInstance () {
return sqlMap;
}
} |
C'est un exemple de classe utilitaire pour utiliser iBatis. Mais ma question porte sur la syntaxe, et pas sur iBatis.
On voit à la troisième ligne un bloc de code précédé du mot-clef static. Or j'ai appris dans mes cours il y a quelque temps que dans une classe on mettait des attributs et des méthodes. Or ce n'est ni l'un ni l'autre.
Donc qu'est-ce que c'est ? Un bloc qui est éxécuté au chargement de la classe par la JVM ? Si oui à quel moment ? Avant ou après l'appel au constructeur ? Durée de vie des objets créés à l'intérieur ?
Merci pour vos réponses, même partielles.