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 :

[question] Peut on creer une méthode static dans une interface ?


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 34
    Points : 27
    Points
    27
    Par défaut [question] Peut on creer une méthode static dans une interface ?
    Bon voilà tout est dans le titre je voudrait créer un méthode statique dans une de mes classes mais je n'arrive pas à définir cette méthode en tant que static dans mon interface ( eclipse me génère une erreur ) je voulais savoir si cel a était possible merci de votre aide !!!

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Yotho
    Bon voilà tout est dans le titre je voudrait créer un méthode statique dans une de mes classes mais je n'arrive pas à définir cette méthode en tant que static dans mon interface ( eclipse me génère une erreur ) je voulais savoir si cel a était possible merci de votre aide !!!
    Tu ne peux pas déclarer de méthode static dans une interface (vu que tu ne peux pas donner de code, et qu'une méthode static doit forcément fournir le code)...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    ok merci pour la réponse rapide (au moins maintenant je suis sur que ça vient pas d'eclipse ;-))....
    Mais est t'il possible de faire en sorte que ma méthode soit statique dans la classe mais pas dans mon interface ???

  4. #4
    Membre actif Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    Hello,

    une méthode est implicitement abstract dans une interface.

    Pourquoi au fait, tu veux faire quoi?
    fais voir un bout de code.

    @++

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 33
    Points
    33
    Par défaut
    Salut,

    Dans le cadre d'un projet je dois aussi avoir une méthode static.
    Le problème est que cette classe implémente une interface.
    Est il possible de contourner le problème, voici un exemple du problème:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public interface Animal {
    }
     
    abstract class AbstractAnimal implements Animal{
    // Ici j'ai ma méthode static
    }
    Mes classes sont dans un package, où juste l'interface apparait.
    Dans mon main j'aimerais faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Animal.maMethodeStatic();
    Si vous avez besoin d'autres détails demandez moi.

  6. #6
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Non, mais tu peux faire AbstractAnimal.maMethodStatic();

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 33
    Points
    33
    Par défaut
    J'aurais bien aimé le faire mais le probleme c'est que abstractAnimal est
    invisible en dehors de son package.:

    Je pense qu'il n'y a pas de solution possible en static.

  8. #8
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Ta méthode statique, tu peux la mettre dans une classe indépendante, genre AnimalManager...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 32
    Points : 33
    Points
    33
    Par défaut
    Ok, Merci bcp.

  10. #10
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Juste histoire de déboussoler tout le monde, si si on peut mettre du code une interface :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public interface Toto {
        public interface CodeInsideInterface {
          public interface Method {
            public void run();
          }
          Method doSomething = new Method() {
            public void run() {
              System.out.print("Du code dans une interface nonnnn.......... ");
            }
          };
        }
    }
    En plus comme les membres dans les interfaces sont statiques....


  11. #11
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par zekey
    Juste histoire de déboussoler tout le monde, si si on peut mettre du code une interface
    C'est vraiment histoire de déboussoler tout le monde car c'est pas vraiment dans une interface que tu exécutes le code, c'est dans une classe concrète anonyme qui hérite de Method (normalement Method$1)... Et tu aurais pu te passer de l'interface Toto (pas besoin d'autant de niveaux)...

  12. #12
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Citation Envoyé par Yotho
    je voulais savoir si cel a était possible merci de votre aide !!!
    Donc finalement c'est possible...
    En tous cas je sais pas pour vous mais moi je me coucherai moins con ce soir.

  13. #13
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Attention la question n'était pas d'executer le code dans l'interface mais de créer une méthode.

    Concernant les niveaux, c'est vrai j'aurai plus implémenter Runnable

    Evidemment qu'il ne faut jamais faire des trucs pareils sinon je vais me faire crussifier pas vos profs d'infos.

  14. #14
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Satch
    Donc finalement c'est possible...
    En tous cas je sais pas pour vous mais moi je me coucherai moins con ce soir.
    Enfin, c'est possible, c'est vite dit...
    C'est tout simplement que dans l'interface tu as le droit aux variables statiques...
    Et que c'est variables statiques sont des Objets... Donc tu peux à partir de ces objets exécuter des méthodes...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    interface MonInterface {
        StringBuilder builder = new StringBuilder();
    }
    Après bien sûr, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonInterface.builder.append("maString");
    C'est pas ce que j'appelle du code dans une interface...
    (c'est pareil que l'exemple du dessus, sauf que dans l'exemple du dessus les méthodes sont définies à la volée)

  15. #15
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    'fin bon, ce que je voulais dire c'est qu'il est possible de faire ce qu'il voulait faire, à savoir un bout code commun à toutes les classes implémentant l'interface.

    Je ne me servirai jamais de ça mais bon je suis content de connaître l'astuce.

  16. #16
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Citation Envoyé par ®om
    Enfin, c'est possible, c'est vite dit...
    C'est tout simplement que dans l'interface tu as le droit aux variables statiques...
    Et que c'est variables statiques sont des Objets... Donc tu peux à partir de ces objets exécuter des méthodes...
    En fait c'est vraiment selon la définition que l'on donne d'une méthode statique.
    Une méthode statique est présente une seule fois quelque soit le nombre d'instance de la classe. L'effet désiré est obtenu même si le code n'est statique que pas le fait qu'il soit hébergé par une variable anonyme.

    Je voulais pas lancer un grand débat, c'était juste pour plaisanter. désolé

  17. #17
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par zekey
    En fait c'est vraiment selon la définition que l'on donne d'une méthode statique.
    Une méthode statique est présente une seule fois quelque soit le nombre d'instance de la classe. L'effet désiré est obtenu même si le code n'est statique que par le fait qu'il soit hébergé par une variable anonyme.

    Je voulais pas lancer un grand débat, c'était juste pour plaisanter. désolé
    Au contraire, c'est avec des exemples très particuliers qu'on peut comprendre comment le langage fonctionne

    Sinon, je suis d'accord avec toi, ça dépend la définition que l'on donne à statique... Et statique n'est pas "singleton" (même si une classe anonyme n'est pas vraiment un singleton -on ne peut pas y accéder de n'importe où en static-)

Discussions similaires

  1. Redéfinir une méthode static dans une classe dérivée
    Par michelp3 dans le forum Général Java
    Réponses: 5
    Dernier message: 06/05/2015, 22h28
  2. arrayList dans une méthode recupérer dans une autre méthode
    Par toufik34 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 31/07/2013, 09h45
  3. Utiliser une méthode non-static dans une méthode static
    Par mcfly37 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/08/2010, 11h41
  4. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  5. Ouvrir URL dans une méthode static
    Par NutellaPiou dans le forum Applets
    Réponses: 2
    Dernier message: 18/03/2009, 10h31

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