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 :

Classe à l'intérieur d'une méthode


Sujet :

avec Java

  1. #1
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut Classe à l'intérieur d'une méthode
    bonjour,
    est ce que on peut définir une class à l'intérieur d'une méthode en java,
    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    Il me semble que non mais à confirmé par quelqu'un d'autre.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Si on peu dans une certaine mesure en faisant par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void maMethode() {
       ActionListener listener = new ActionListener() { 
    		public void actionPerformed(ActionEvent e) { 
    			// Le code
    		} 
    	};
    }
    La classe concrète implémentant l'interface ActionListener est définie dans la méthode

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    oui, ce sont les classes interne locales et les classes internes anonymes. Leur visibilité est limitée à la méthode.


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    package test;
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
    public class InnerExample {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		JFrame myFrame = new JFrame();
    		myFrame.setTitle("test");
    		JButton bouton = new JButton("Test");
    		myFrame.getContentPane().add(bouton);
    		myFrame.setSize(100,50);
    		myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		// on déclare une classe anonyme qui implémente l'interface ActionListener
    		ActionListener al = new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				System.out.println("Bonjour");
    			}
    		};
    		bouton.addActionListener(al);
    		// on déclare une classe Locale, qui implémente ActionListener, mais qui a aussi un constructeur
    		// explicite et un nom
    		class MyListener implements ActionListener{
     
    			String text;
    			public MyListener(String text){
    				this.text=text;
    			}
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				System.out.println(text);
    			}
    		}
    		// on l'instancie tant qu'on veux
    		bouton.addActionListener(new MyListener("test 1"));
    		bouton.addActionListener(new MyListener("test 2"));
    		bouton.addActionListener(new MyListener("test 3"));
    		myFrame.setVisible(true);
    	}
     
    }

  5. #5
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    oui, ce sont les classes interne locales et les classes internes anonymes. Leur visibilité est limitée à la méthode.

    merci,
    MyListener est une classe interne anonyme ou bien interne locale?
    en plus cette classe c'est une classe abstraite je suppose?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    elle n'est pas abstraite, elle n'est pas déclarée avec le mot clé abstract. Elle n'est pas anonyme puisqu'elle a un nom.

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/12/2008, 02h12
  2. Instance de classe à l'intérieur d'une autre
    Par cobolfingaz dans le forum C#
    Réponses: 12
    Dernier message: 17/01/2008, 11h25
  3. Réponses: 3
    Dernier message: 15/01/2008, 17h10
  4. Réponses: 5
    Dernier message: 15/05/2007, 20h51
  5. Synchronisation à l'intérieur d'une méthode
    Par Péchereau dans le forum Langage
    Réponses: 14
    Dernier message: 27/04/2007, 11h31

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