Je le code suivant:quelle est la différence dans le comportement de ce code?
public class Application extends ApplicationManager{
public static void main(String[] args) {
ProcessUtility.enableProcessUtility();
new Application().start();
}
}
et le code classe ApplicationManager:
public class ApplicationManager {
public ApplicationManager() {
String configPath = "file:home" + File.separator + "log4j.xml";
System.setProperty("log4j.configuration", configPath);
logger = Logger.getLogger(ApplicationManager.class);
}
protected void start() {
logger.info("*** Starting ApplicationManager ***");
}
quand je lance la classe d'application de la méthode de démarrage du parent est appelé, peut-il être appelé sans appeler le constructeur parent par défaut?
ma deuxième question est le code ci-dessus différent de ce code:
public class Application extends ApplicationManager{
public static void main(String[] args) {
new Application().start();
}
@Override
protected void start() {
ProcessUtility.enableProcessUtility();
super.start();
}
}
et la classe ApplicationManager comme ci-dessus.
c'est le code de la méthode statique:
public static void enableProcessUtility() {
isCommon = false;
}
merci à l'avance.
Quand j'exécute les deux codes, j'obtiens des résultats différents comment cela peut-il arriver ?, Je sais qu'il doit appeler le constructeur parent mais un code du constructeur parent ne s'exécute pas dans l'une de ces implémentations! – flashDisk
@flashDisk Dans le deuxième extrait, les constructeurs sont exécutés avant 'ProcessUtility.enableProcessUtility()'. Peut-être que c'est la cause du comportement différent. – Eran
le comportement correct est la deuxième mise en œuvre, mais je ne trouve toujours pas pourquoi! – flashDisk