C'est kôr moi avec mes questions de newbie ;-)
Je dois dire que je suis assez pollué par le C (plus que le C++) et
éventuellement le Php. La question du jour est un tout petit détail,
mais la réponse devrait m'aider à mieux percevoir le langage.
Dans une classe, j'ai:
public class Case
extends Canvas {
/* .... */
private boolean[][] matrice_;
/* .... */
matrice_ est normalement initialisée dans le constructeur:
matrice_ = new boolean[7][5];
On doit parfois réinitialiser matrice_, tout à false. Je trouve ça (le
code est de mon fils, je le "corrige[*]", MDR, c'est un peu les
Aveugles dans le tableau de Bruegel !) :
[*] pas le fiston, le code ...
public void reset() {
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 5; j++) {
matrice_[i][j] = false;
}
}
}
Puis-je remplacer par:
public void reset() {
matrice_ = new boolean[7][5];
}
Le fait que new initialise tout à false, je ne fait que le supposer, et
je l'ai vérifié. Est-ce garanti ?
Recréer un objet a-t-il des effets néfastes ?
Existe-t-il d'autres méthodes de "remise à zéro" ou de "mise à X"
massives ?
private static final boolean LED_ON = true; private static final boolean LED_OFF = false;
Est-ce correct ? Le remplacement a-t-il bien lieu à la compilation et ainsi ne grève pas l'exécution ?
Oui, mais je ne suis pas sûr que ce soit dans les spécifs de java.
Y a-t-il une solution pour définir ce type de constantes au niveau de l'application, du package en fait ?
Il te suffit de passer tes variables final en public, et de les mettre dans une classe ou une interface.
Mais je ne te conseille pas de procéder comme ça. Il vaut mieux essayer d'associer des objets avec leur contenu, et de leur donner un comportement.
Donc tu aurais plutôt quelque chose du genre :
public class Led { public void goOn(); ... public void goOff(); ... public boolean isOn(); ... public void toogle(); }
Bon... etc...
-- Hervé AGNOUX http://www.diaam-informatique.com
Olivier Thomann
Est-ce correct ? Le remplacement a-t-il bien lieu à la compilation et ainsi ne grève pas l'exécution ? Oui, mais je ne suis pas sûr que ce soit dans les spécifs de java.
Oui c'est specifie. Je peux te chercher la reference exacte dans les
specs si tu veux. Toute expression constante *doit* etre "inlinee" a la compilation. -- Olivier
Est-ce correct ? Le remplacement a-t-il bien lieu à la compilation et
ainsi ne grève pas l'exécution ?
Oui, mais je ne suis pas sûr que ce soit dans les spécifs de java.
Oui c'est specifie. Je peux te chercher la reference exacte dans les
specs si tu veux.
Toute expression constante *doit* etre "inlinee" a la compilation.
--
Olivier
Est-ce correct ? Le remplacement a-t-il bien lieu à la compilation et ainsi ne grève pas l'exécution ? Oui, mais je ne suis pas sûr que ce soit dans les spécifs de java.
Oui c'est specifie. Je peux te chercher la reference exacte dans les
specs si tu veux. Toute expression constante *doit* etre "inlinee" a la compilation. -- Olivier