IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

declaration variable globale


Sujet :

avec Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut declaration variable globale
    Bonjour,

    Je voudrais pouvoir declarer des variables globales à mon programme dans une interface, afin de pouvoir l'implementer quand ca m'arrange, mais lorsque je veux faire appel à ma variable declarée comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public interface Iconst {
     
    	String nom_Fichier = "";
    }
    J'ai une erreur me disant que le champ final ne peut pas etre changé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The final field Iconst.nom_Fichier cannot be assigned

    Quelqu'un saurait pourquoi ?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Oui, il est interdit d'essayer de redéfinir une constante (toute variable d'une interface est automatiquement static final). Par convention, on écrit le nom de ces variables en majuscules.
    L'interface est bonne, mais l'erreur doit venir de la façon dont tu l'utilises. Tu as le deux possibilités :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Test1 {
        public void test1() {
            System.out.println(Iconst.NOM_FICHIER);
        }
    }
     
    public class Test2 implements Iconst {
        public void test2() {
            System.out.println(NOM_FICHIER);
        }
    }

  3. #3
    Membre expérimenté Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Par défaut
    En fait, une propriété (attribut) d'une interface est par défaut public, static et final, mais tu n'as pas besoin de la déclarer comme tel; ce qui signifie qu'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface Iconst {
    	String nom_Fichier = "";
    }
    revient exactement à écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface Iconst {
    	public static final String nom_Fichier = "";
    }
    Pour bien t'en rendre compte tu peux essayer avec ta première déclaration:

    1. de n'importe quelle classe de n'importe quel package
    qui ne générera aucune erreur (après avoir fait les bons import bien sûr): ce qui prouve que l'attribut est public et static

    2. modifier ta déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface Iconst {
    	String nom_Fichier;
    }
    ce qui te donnera une erreur à la compilation: preuve que l'attribut est bien final, etc.

  4. #4
    Membre expérimenté Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Par défaut
    Je n'avais pas vu le post de djsnipe.

    Ses remarques sont justes.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Salut, Oublie les variables globales en java, ca n'existe pas. Comme dit précédemment, une interface ne peut contenir que des constantes et des méthodes abstraites. Si tu veux une variable accessible de n'importe ou dans ton programme, tu peux utiliser une variable statique qui sera membre de la classe qui va bien.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut
    Ok, merci a tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. declaration variable global
    Par cortex59 dans le forum C++
    Réponses: 13
    Dernier message: 13/02/2009, 15h15
  2. [C#.NET] Declarer variable globale
    Par Ticoche dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/12/2007, 09h59
  3. Utilisation et Declaration Variable globale
    Par skywaltitou dans le forum MFC
    Réponses: 7
    Dernier message: 28/11/2007, 16h00
  4. Declaration variable globale
    Par abbd dans le forum C++/CLI
    Réponses: 5
    Dernier message: 19/07/2007, 20h02
  5. declaration variable global
    Par zerocoolyoussef dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/06/2007, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo