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

NetBeans Java Discussion :

Classe interne dans un Thread ?


Sujet :

NetBeans Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Classe interne dans un Thread ?
    Peut-on svp créer une classe interne dans une classe (thread) implémentant l'interface runnable ?

    Si non pourquoi exactement svp ?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    on peut déclarer une classe interne dans n'importe quelle classe que tu définis (Même dans une enum).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci, mais je reformule ma question autrement svp : peut-on créer une classe interne avec méthode interne (très important) dans une classe implémentant l'interface Runnable (Thread) ?
    Développementement.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je ne sais pas ce que tu appelles méthode interne ? Une méthode est une méthode. Une classe peut avoir une ou plusieurs méthodes. Quelque soit la classe.
    Sinon, c'est la même question, donc la même réponse : on peut créer une classe interne dans n'importe quelle classe. Qu'elle implémente Runnable, une autre interface, ou aucune, ne change rien : une classe est une classe.

    Exemple de principe :
    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
    50
    51
    52
    53
    54
    55
    56
     
    // une classe concrète implémentant l'interface java.lang.Runnable
    public class UneClasse implements Runnable {
     
         // une classe interne implémentant l'interface java.lang.Runnable
         private class ClasseInterne implements Runnable {
              public void run() {
                   uneMethode(); // appelle d'une méthode de ClasseInterne
              }
              private void uneMethode() {
                        System.out.println("Execution  méthode de classe interne");
              }
         }
     
         public void run() {
             uneMethode();
         }
     
         private void uneMethode() {
     
        	 System.out.println("Execution  méthode de classe UneClasse");
     
               // une classe locale à la méthode, implémentant l'interface java.lang.Runnable
               class ClasseLocale implements Runnable {
                    public void run() {
                         uneMethode(); // appelle d'une méthode de la classe locale
                    }
                    public void uneMethode() {
                        System.out.println("Execution  méthode de classe locale");
                    }
               }
     
               final ClasseLocale runnable1=new ClasseLocale();
               final ClasseInterne runnable2=new ClasseInterne();
     
               //instanciation d'une instance de classe anonyme implémentant l'interface java.lang.Runnable
               Runnable runnable=new  Runnable() {
                   public void run() {
                         uneMethode();
                   }
                    public void uneMethode() {
                        System.out.println("Execution  méthode de classe anonyme");
                        runnable1.run(); // appel de la méthode run de la classe locale
                        runnable2.run(); // appel de la méthode run de la classe interne 
                    }
               };
     
               runnable.run(); // appel de la méthode run de la classe anonyme
     
         }
     
         public static void main(String[] args) {
             new UneClasse().run(); // appel de la méthode run de UneClasse
         }
     
    }
    Et résultat d'éxécution :
    Execution  méthode de classe UneClasse
    Execution  méthode de classe anonyme
    Execution  méthode de classe locale
    Execution  méthode de classe interne
    PS: Attention, l'interface Runnable ne permet pas de créer un thread (c'est la classe Thread qu'il faut utiliser pour faire un thread, et cette classe peut déléguer à un Runnable le code qu'elle doit exécuter dans le thread).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/10/2013, 21h57
  2. Redéfinir un constructeur dans une classe interne anonyme
    Par pigpen dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 31/10/2011, 13h36
  3. référence à une classe externe dans son interne
    Par Virgile le chat dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2009, 23h58
  4. Class interne dans une classe template
    Par MatRem dans le forum Langage
    Réponses: 26
    Dernier message: 15/06/2006, 10h45
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

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