Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
854 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Créer une classe ayant le comportement d'une classe interne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Créer une classe ayant le comportement d'une classe interne

n°2258713
didibear
Posté le 25-05-2015 à 18:18:58  profilanswer
 

Bonjour, je voudrais créer une classe qui pourrai accéder au attribut d'autre classe qui l'utilise selon une définition abstraite.
Par exemple :

Code :
  1. public abstract class Launcher{
  2.     // des attributs, des methodes, pleins de trucs ne pouvant etre dans une interface
  3.     public abstract void run();
  4. }
  5. public class A {
  6.     private int attr1;
  7.     private Launcher launcher;
  8.    
  9.     // Constructeur ...
  10.     public void setLauncher(){
  11.    
  12.         launcher = new Launcher(){
  13.              @Override
  14.              public void run(){
  15.                  attr1++; // ceci ne marche pas puisqu'on change de context  
  16.              }
  17.         }
  18.     }
  19.     public void launch(){
  20.         launcher.run();
  21.     }
  22. }
  23. // une class B ayant un comportement similaire à A


 
Mon réel problème est à peu prés similaire à ça, et bien sur ici ma classe Launcher est assez grosse et il serai fâcheux de la dupliqué en plusieurs classe interne (surtout que des éléments static m'intéresse)
Ma question est donc :
Avez-vous une solution à ce problème ?
 
Merci d'avance :)  

mood
Publicité
Posté le 25-05-2015 à 18:18:58  profilanswer
 

n°2258715
didibear
Posté le 25-05-2015 à 18:34:46  profilanswer
 

Ok desolé du double post mais j'ai trouvé une solution, qui est d'utiliser une interface (Runnable) et de la définir dans le context que l'on veux
Comme ceci :

Code :
  1. public class Launcher{
  2.     // des attributs, des methodes, pleins de trucs ne pouvant etre dans une interface
  3.     private Runnable runnable;
  4.     public void run(){
  5.          runnable.run()
  6.     }
  7. }
  8. public class A {
  9.     private int attr1;
  10.     private Launcher launcher;
  11.    
  12.     // Constructeur ...
  13.     public void setLauncher(){
  14.    
  15.         launcher = new Launcher(new Runnable(){
  16.              @Override
  17.              public void run(){
  18.                  attr1++;
  19.              }
  20.         });
  21.     }
  22.     public void launch(){
  23.         launcher.run();
  24.     }
  25. }


Message édité par didibear le 25-05-2015 à 18:35:29
n°2258726
Devil'sTig​er
Posté le 25-05-2015 à 21:45:49  profilanswer
 

Nul besoin d'utiliser Runnable qui n'est VRAIMENT pas fait pour ce que tu souhaites faire.
 
Java gère très bien l'override de méthode:
 
http://beginnersbook.com/2014/01/m [...] h-example/
 
Tu peux donc avoir un bloc commun -pas forcément abstrait- dont les classes hérites, et override ce qui a besoin d'être override pour avoir des comportements différents.
 
Par défault, tu as aussi besoin de connaitre peut-être l'existence de protected, qui est entre public et private comme def (sait-on jamais), et qui donc te permettra d'aller les chercher les propriétés du parent si besoin dans ton override niveau fils.
 
EDIT: en tout cas c'est ce que je comprend de ton exemple, je vois pas pourquoi tu binds de la sorte tes deux classes...


Message édité par Devil'sTiger le 25-05-2015 à 21:48:44

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Créer une classe ayant le comportement d'une classe interne

 

Sujets relatifs
Aide pour créer un puzzleCréer un classement en python 2.7
Créer des séries à partir de plusieurs colonnes d'une tableCréer une classe pour se connecter au ftp
Créer un formulaire pour sélectionner des PDF à inclure dans un zip ?Créer une application qui utilise une autre application.
Créer une fonction acceptant divers arguments en CCréer site web d'après un classeur excel
Créer une extension avec des actions automatique 
Plus de sujets relatifs à : Créer une classe ayant le comportement d'une classe interne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR