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

Langage Java Discussion :

Import static ou non


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut Import static ou non
    Bonjour,

    je reprends des développements en cours, et sans trop de documentation (une des premières tâches que je me suis d'ailleurs assignés).
    J'ai une classe A dans laquelle est défini un static enum MONENUM.
    J'ai une autre classe B qui fait un import de la class A et en plus un import static de A.MONENUM.
    Ce qui donne pour la class A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class A {
        public static enum MONENUM {
            SUCCESS, FAILURE
        }
    }
    et pour la class B :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import A;
    import A.MONENUM;
    import static A.MONENUM;
     
    class B {
        ....
    }

    Première question : import static me semblait qu'il fallait plus l'utilisé depuis quelques temps déjà, mais je me trompe surement.

    Deuxièmement, mon Eclipse refuse de compiler trop d'import vers la même class, ce qui me parait logique, mais la question est de savoir comment çà peut compiler chez l'autre gars.
    Le message d'erreur d'eclipse :
    The import A.MONENUM collides with another import statement

    D'avance merci de vos remarques,
    HadanMarv,

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par HadanMarv Voir le message
    Première question : import static me semblait qu'il fallait plus l'utilisé depuis quelques temps déjà, mais je me trompe surement.
    Dans la mesure où c'est une nouveauté de java 5, je ne pense pas ^^ je l'utilise d'ailleurs assez régulièrement, cela simplifie l'écriture (bien que cela puisse donner lieu à des conflits de nommage si on importe plusieurs classes statiquement et qu'elles définissent les mêmes noms de constantes, mais c'est assez rare)

    Citation Envoyé par HadanMarv Voir le message
    Deuxièmement, mon Eclipse refuse de compiler trop d'import vers la même class, ce qui me parait logique, mais la question est de savoir comment çà peut compiler chez l'autre gars.
    Le message d'erreur d'eclipse :
    The import A.MONENUM collides with another import statement

    D'avance merci de vos remarques,
    HadanMarv,
    Essaie "import static A.MONENUM.*;", ça devrait fonctionner mieux

    Et non, Java n'a pas de limitation sur le nombre d'imports de la même classe pouvant être fait

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Dans la mesure où c'est une nouveauté de java 5, je ne pense pas ^^ je l'utilise d'ailleurs assez régulièrement, cela simplifie l'écriture (bien que cela puisse donner lieu à des conflits de nommage si on importe plusieurs classes statiquement et qu'elles définissent les mêmes noms de constantes, mais c'est assez rare)
    Il me semblait bien que je me trompait, autant pour moi.

    je pense que ce qui pose problème c'est :
    import A.MONENUM;
    import static A.MONENUM;
    Je ne comprends pas comment cela peut compiler ?
    Effectivement en corrigeant c'est bon cela fonctionne, mais ce que je cherche à reproduire c'est le paramètre du javac qui va me permettre de compiler comme mon prédécesseur.

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    j'ai vraiment un doute sur cette notation, à mon sens ce n'est pas possible de faire compiler le code que tu as posté. C'est d'ailleurs un non-sens sur le rôle des imports statiques, qui sont juste là pour raccourcir l'appel à des champs et méthodes statiques définies dans une autre classe. Donc, faire "import static MaClasseOuMonEnum" n'a aucun sens, par contre "import static MaClassOuMonEnum.*;" en a.

    Es-tu vraiment sûr que ce code exact compilait??


  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    C'est bien ce qu'il me semble aussi je ne pense pas non plus, mais bon.

    Le code proviens du gestionnaire de source donc je suppose que oui.

    Cela dit en regardant dans les livraisons du projets (war à déployer) je n'ai pas retrouvé en décompilant les class tous les import sont au même niveau, et regroupé par package, ce qui me semble logique car le décompilateur ne doit pas pouvoir tout retrouver...

    Merci tout de ton aide.
    HadanMarv,

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par HadanMarv Voir le message
    C'est bien ce qu'il me semble aussi je ne pense pas non plus, mais bon.
    Heu... Chez moi ca compile sans broncher avec javac 1.6.
    J'ai vérifier cela avec ce petit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.awt.Desktop.Action;
    import static java.awt.Desktop.Action;
     
     
    public class Main {
    	public static void main(String[] args) {
    		Action a = Action.OPEN;
    	}
    }
    Par contre je n'ai aucune idée de la raison du pourquoi de cela... Ni même s'il y a une différence entre les deux !



    Citation Envoyé par HadanMarv Voir le message
    je n'ai pas retrouvé en décompilant les class tous les import sont au même niveau
    Heu... Si tu décompiles le code tu peux t'attendre à avoir des truc incohérent comme ca...



    a++

Discussions similaires

  1. Importer un projet (non eclipse) dans eclipse
    Par uraxyd dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/10/2007, 12h04
  2. Static et non static. Comment faire?
    Par cmako dans le forum Langage
    Réponses: 16
    Dernier message: 19/09/2007, 23h03
  3. methode static ou non ?
    Par GroRelou dans le forum Langage
    Réponses: 1
    Dernier message: 28/03/2007, 20h50
  4. [IMPORT] javax.ejb.* non trouvé
    Par mejri dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 04/04/2006, 11h20

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