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 :

Inner Class ou passage d'instance


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Inner Class ou passage d'instance
    Bonjour à tous,

    je m'interrroge sur la manière la plus correcte de procéder. J'ai une classe A qui instancie une thread B. The thread B à besoin de lancer des méthodes de A.

    Est il plus correcte de passer par une inner class :

    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
    public class A
    {
    	public void A()
    	{
    		B theB = new B();
    		theB.start();
    	}
     
    	public doSomethingInA()
    	{
    	}
     
    	public class B implements Runnable {
     
     
    		public void start()
    		{
    			Thread thread = new Thread(this);
    			thread.start();
    		}
     
    		public void run() {
    			while(thread != null) {
    				doSomethingInA();
    			}
    		}
    	}
    }
    Ou alors puis je sans problème passer l'instance de A à B :
    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
    public class A
    {
    	public A()
    	{
    		B theB = new B(this);
    		theB.start();
    	}
     
    	public doSomethingInA()
    	{
    	}
    }
     
    public class B implements Runnable 
    {
    	private A instanceA
    	public B(A instanceA )
    	{
    		this.instanceA = instanceA
    	}
     
    	public void start()
    	{
    		Thread thread = new Thread(this);
    		thread.start();
    	}
     
    	public void run() {
    		while(thread != null) {
    			instanceA.doSomethingInA();
    		}
    	}
    }
    Cette dernière solution à ma préférence au niveau clareté du code et découpage des fichiers mais est elle aussi efficace que l'autre. Ne développant que occasionnellement en JAVA j'ai un peu peur des conséquences que pourrait avoir l'une ou l'autre des méthodes (fuite mémoire, performance, ...)

    merci pour vos conseils
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    Salut,
    Vu ton exemple il apparait que B n'a pas d’existence distincte de A. par conséquence la inner class semble répondre plus au problèmes de visibilité (la classe B est complètement liée à A, et seule celle ci peut l'utiliser). Apres je suis d'accord que pour la lisibilité du code la solution 2 est plus agréable.
    ps: je pense que l'article http://www.javaworld.com/javaworld/j...nnerclass.html résume bien ce que j'essaie d'expliquer

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Effectivement, la question à poser c'est plutot "Est-ce que quelqu'un en dehors de A a besoin de connaître B ?"

    Si oui -> classes séparées
    Si non -> inner class

    Le fait d'avoir besoin de l'instance de A n'est pas un critère. C'est juste ce critère qui fera la différence entre une inner class et un static inner class

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/03/2007, 21h14
  2. inner class and static way
    Par vince_grenoblois dans le forum Langage
    Réponses: 1
    Dernier message: 11/08/2006, 15h52
  3. Inner Class ou lisibilité
    Par Emplyst dans le forum Langage
    Réponses: 4
    Dernier message: 17/07/2006, 21h06
  4. [Classe] Auto destruction d'instances
    Par Clorish dans le forum Langage
    Réponses: 7
    Dernier message: 11/07/2005, 14h52
  5. Es ce possible de faire des inner class en C++?
    Par Eithelgul dans le forum C++
    Réponses: 5
    Dernier message: 14/02/2005, 14h27

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