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 :

Redéfinition de méthodes de classes impossibles car se croisent


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 19
    Points
    19
    Par défaut Redéfinition de méthodes de classes impossibles car se croisent
    Bonjour,

    j'ai besoin de redéfinir la méthode "log" de l'objet Ircom. Mais log Appelle IHM qui n'est pas encore définit.

    Si je définis IHM avant Ircom alors je me retrouve avec le même problème puisque onTextLine de IHM appelle Ircom qui ne sera pas lui encore définit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    final Ircom ircom = new Ircom() {
            public void log (String line) {
    /* compil error */	ihm.getConsole().append (line + "\n");                                                    
    /* compil error */	ihm.getConsole().setCaretPosition (ihm.getConsole().getText().length());     
    	}
    };
     
    final IHM ihm = new IHM() {
             public void onTextLine (String line) {
    		ircom.send(line);
    	}
    };
    Merci si vous pouvez me faire part de vos suggestions

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    premier réflexe quand on galère avec les classes anonymes : faire des classes pas anonymes.

    ... Je dis pas que c'est impossible avec des classes anonymes, hein. Je dis juste que c'est pas nécessaire de se compliquer la vie.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Mais alors pour redéfinir la méthode log(String line), un truc comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		final Ircom ircom = new Ircom();
     
    		ircom.getClass().getDeclaredMethod("log", "")...
    Désolé je vois pas autre chemin

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bon. Mettons que c'est pas évident.

    Par exemple, on pouvait faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class ReloggingIrcom extends Ircom {
        private final IHM ihm = new ReloggingIrcomIHM();
     
        @Override
        public void log(String line) {
            ihm.getConsole().append(line + "\n");
            ihm.getConsole().setCaretPosition (ihm.getConsole().getText().length());
        }
     
        private class ReloggingIrcomIHM extends IHM {
            @Override
            public void onTextLine(String line) {
                ReloggingIrcom.this.send(line);
            }
     
        }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    ok merci pour la soluce mais je vais pas aller dans ce sens là

    Car viendra ensuite se combiner mon "IrcListener" dont je redéfinis les événements genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    new IrcListener() {
     
    public void onJoin (String channel, String nickName) {
     
    ...
     
    ircom.talk (channel , "Hey " + nickName);
     
    ...
     
    }
     
    public void onMessage (String channel, String nickName, String message) {
     
    ...
     
    ihm.getConsole2().append (nickName + " a parlé sur " + channel + " \n");
     
    ...
     
    }
     
     
     
     
     
    }
    ---

    d'ailleurs par curiosité, quel langage objet (Ruby, Python, Eiffel ?...) autoriserai ce que là Java m'interdit dans le premier post ?

    ---

    ah ok quand je fais une redéfinition c'est comme si je faisais un "extends"

    donc le Ircom qui a été redéfinit est une nouvelle classe qui n'a pas son propre nom -- d'où le terme anonyme ?

    Merci bien

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par powel Voir le message
    d'ailleurs par curiosité, quel langage objet (Ruby, Python, Eiffel ?...) autoriserai ce que là Java m'interdit dans le premier post ?
    Les langages à typage dynamique autorisent à utiliser des variables qui n'existent pas encore.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    PHP donc ?

    ----

    en fait je m'aperçois dans mon truc un problème de conception ; Ircom devrait avoir son IrcListener et proposer des IrcListener à l'appelant. Puisqu'IrcListener est dépendant de la connexion au serveur.

    Mon IrcListener indépendant qui se ballade dans la nature rend le truc bancal ...

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Et JavaScript, Python...

    Je cherche pas vraiment à faire une liste.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    final class ReloggingIrcom extends Ircom {
            private final IHM ihm = new ReloggingIrcomIHM();
    		 
            @Override
            public void log(String line) {
                    ihm.getConsole().append(line + "\n");
                    ihm.getConsole().setCaretPosition (ihm.getConsole().getText().length());
            }
    		 
            final class ReloggingIrcomIHM extends IHM {
    
                @Override
                public void onTextLine(String line) {
                        ReloggingIrcom.this.send(line);
                }
    		 
             }
    }
             
    final ReloggingIrcom ircom = new ReloggingIrcom ();
    final IHM ihm = ircom.ihm;
    ça marche super

    l'attribut privé "ihm" accessible ?? (en bas du code)

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    'Suffit de pas le mettre privé... Ou de fournir un getter pour l'avoir.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Non mais il est accessible alors qu'on l'a mit privé

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    'Faudrait le code complet, mais private ça signifie "accessible uniquement depuis la classe en cours".

    Du coup si par le plus grand des hasards, l'endroit où tu essaies d'y accéder se trouve être à l'intérieur de la classe en cours...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Ok je vois oui c'est un extrait de code non-entrecoupé.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/12/2008, 18h20
  2. Réponses: 1
    Dernier message: 09/03/2006, 18h15
  3. Réponses: 4
    Dernier message: 29/01/2006, 17h54
  4. Forme d'appel de méthode réservé méthodes de classe
    Par Chicobrasil dans le forum Langage
    Réponses: 16
    Dernier message: 03/01/2006, 17h43
  5. [C#] Ajout d'une méthode à la classe DropDownList
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/08/2005, 14h23

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