Bonjour à tous !
Je me demandais, si j'ai un petit programme avec plusieurs classes qui utilisent une variable constante, est-ce que je dois juste la déclarer dans le main ? Ou bien dans chaque classe qui l'utilise ?
Merci
Bonjour à tous !
Je me demandais, si j'ai un petit programme avec plusieurs classes qui utilisent une variable constante, est-ce que je dois juste la déclarer dans le main ? Ou bien dans chaque classe qui l'utilise ?
Merci
Salut,
Si tu parles d'une final static (parce qu'une variable qui est constante, c'est contradictoire), il suffit de la déclarer en public dans une des classes, celle la plus logique :
Par exemple :
Et tu peux la référencer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class Resources { public final static Image ICON_APPLICATION = ...; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class UneClasse { public UneClasse() { Image image = Resources.ICON_APPLICATION; } }De toute manière, le compilateur pourra optimiser en faisant les "copies" qu'ils jugera nécessaires (donc inutile de faire cette copie toi-même).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class UneAutreClasse { public UneAutreClasse () { Image image = Resources.ICON_APPLICATION; } }
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bonjour Hardedoc,
Une constante par définition est... constante Tu ne dois donc la déclarer que dans une seule classe.
D’ailleurs, si tu déclarais la même constante dans différentes classes, il s'agirait en fait de constantes différentes (liées à la classe dans laquelle elle est déclarée): Avec le même nom sans doute mais avec potentiellement des valeurs différentes.
Il te faut donc déclarer une seule constante comme suit:
Et pour l'utiliser:
Code : Sélectionner tout - Visualiser dans une fenêtre à part public static final String MA_CONSTANTE = "valeur fixe";
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 NomDeLaClasseContenantLaConstante.MA_CONSTANTE // ou import static nom.du.package.NomDeLaClasseContenantLaConstante.MA_CONSTANTE; ... System.out.println(MA_CONSTANTE);
Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).
Et bien j'ai un fichier avec mon main et deux classes ( Participant et Concours par exemple )
J'ai mis un final static int NBQUESTIONS = 10; dans mon fichier main mais je suis obligé de retaper cette ligne dans mes 2 classes sinon ça ne fonctionne pas.
Ça me paraît louche de devoir le réécrire à chaque fois... Il y a peut-être quelque chose que j'ai mal fais ?
C'est parce qu'il faut indiquer le nom de la classe en préfixe (sinon le compilateur ne sait pas où aller chercher cette constante). D'ailleurs, les conventions demandent à ce qu'on précise le nom de la classe y compris lorsqu'on utilise la variable dans la classe qui la déclare :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class UneClasse { public final static String UNE_CONSTANTE = "TRUC"; public void uneMethode() { // on utilise la constante System.out.println( UneClasse.UNE_CONSTANTE ); } }
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager