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 :

Classes Anonymes, Method-Local inner Classes.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut Classes Anonymes, Method-Local inner Classes.
    Je me demande sur l uilite des Method-Local inner Classes.

    Est ce que vous en avez deja travailler avec? dans quel cas de design vous utilisez cette solution?
    petit exemple de Method-Local inner Classes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class MyOuter{
         private String x;
        void doStuff(){
               class MyInner(){
                  public void myInnerMethod(){
                      System.out.println("My Inner Method");
                  }
               }
              // la tu termine le code de ton doStuff
        }
    }
    Merci

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Les innerClass sont très utilisées lorsqu'on programme des IHM: elles permettent de créer les écouteurs de ton interface. Aller hop, un exemple pour la route:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    monBouttonQuitter.addActionListener(
    	new ActionListener() { 
    		public void actionPerformed(ActionEvent e) {
    			System.exit(0);
    		}
    	}
    );
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Idem et toujours en GUI lorsqu'il s'agit de creer des taches executables (Runnable, TimerTask), des gestionnaires d'action (Action, AbstractAction), des modeles (ListModel, DefaultListModel, TableModel, ...) ou des renderer (ListCellRenderer, DefaultListCellRenderer, ...). Certaines IDE ne generent le code de gestion des evenementiel que de cette maniere d'ailleurs. Cote ligne de commange/non-graphique, il m'arrive egalement parfois de creer des formaters de texte de cette maniere.

    Disons que, de mon point de vue, c'est surtout pour du code leger et rapide a maintenir. Des qu'on depasse une ou deux methodes surchargees et la dizaine de lignes par methodes, je prefere creer une classe interne non-anonyme centralisant toutes les interfaces (dans le cas d'une outer classe publique) ou d'heriter directement des interfaces en question (dans le cas d'une outer classe package protected).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut utile en effet
    Citation Envoyé par jhaythem
    Je me demande sur l uilite des Method-Local inner Classes.

    Est ce que vous en avez deja travailler avec?

    Merci
    oui, dans les situations citées et autres par exemple pour trier des bidules selon un comparator.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Collections.sort( MonArrayList, new Comparator<UneClasse>() {
        public int compare( UneClasse cla, UneClasse clb ) {
            return(  cla.typeComparaison).compareTo(clb.typeComparaison);
        }
      }
    );

  5. #5
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Je ne sais pas si vous repondez exactement a sa question.

    Pour les inner class anonymes telles que vous les utilisez dans vos exemples il y a bien sur un interet.

    Mais une inner class non anonyme declaree dans une methode ... non je vois pas l'interet.
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  6. #6
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    Merci Bulbo,
    je parlais de ca, moi non plus je vois pas l interet ?!?!?
    mais bon...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut Raison d'être d'une classe interne
    Citation Envoyé par jhaythem
    Merci Bulbo,
    je parlais de ca, moi non plus je vois pas l interet ?!?!?
    mais bon...
    M Bruce H. pense qu'il y a quand même une raison http://bruce-eckel.developpez.com/li...aduction/tij3/
    • 8 : Interfaces & Classes Internes

    • Raison d'être des classes internes

  8. #8
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Sans vouloir etre mechant j'ai vu nulle part dans l'artible de Bruce (Eckel pas tout-puissant) une utilisation d'une inner classe non anonyme et method-local.

    Ce qu'il decrit c'est ce que tout le monde a du utiliser une fois au moins, c'est des inner-class anonymes qui te permettent d'implementer une interface en interne sans necessairement exposer les methodes de cette interface dans l'interface de la classe contenant l'inner-class.

    [Ouch si ca c'est pas abscons comme phrase]

    Declarer une inner classe non anonyme method-local sous-entends d'avoir besoin d'acceder a cette classe nommee dans le corps de la methode (et seulement depuis la methode car declaration locale).
    L'utilite ? Creer plusieurs instances de cette classe ? pourquoi cloisonner la declaration de cette classe a la methode dans ce cas ? Quel est le benefice par rapport a une inner classe nommee declaree dans la classe directement ?

    Bref pour moi ca sert pas a grand chose et je ne vois pas un cas ou il serait plus pertinent d'utiliser ce genre d'inner class que celles plus habituelles que l'on utilise regulierement.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

Discussions similaires

  1. [C#][WebServices] Appel methode avec une classe en paramètre
    Par bran_noz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2004, 16h41
  2. [VB6]Enumérer les attributs et les méthodes d'une classe
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/05/2004, 18h34

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