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

  FORUM HardWare.fr
  Programmation
  Java

  [generics] un patron strategy paramétrable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[generics] un patron strategy paramétrable

n°1061070
bobuse
Posté le 26-04-2005 à 12:20:01  profilanswer
 

:hello:  
 
Je reviens avec mes generics :D
 
Cette fois-ci, je tente de faire un patron strategy  
Pour être plus clair, un genre de truc comme ça http://www.dofactory.com/Patterns/Diagrams/strategy.gif (décrit là)
 
Voilà ma classe abtraite Context qui possède une méthode qui fait appel à une stratégie qui peut changer dynamiquement :

Code :
  1. public abstract class Context <N extends Number> {
  2.  private Strategy < N , ? super Context<N> > strategy;
  3.  public void setStrategy(Strategy < N , ? super Context<N> > strategy) {
  4.  this.strategy = strategy;
  5. }
  6. // méthode qui utilise la stratégie
  7. public N call() throws Exception {
  8.  return this.strategy.call(this);
  9. }
  10. }


Et l'interface qui spécifie la stratégie :

Code :
  1. public interface Strategy < N extends Number , C extends Context<N> > {
  2. public abstract N call(C context);
  3. }


 
Mon problème est au moment du sous-typage. Voici comment je voudrai déclarer mon sous-type de Context :

Code :
  1. public class SomeObject extends Context<Integer> {
  2. public void changeStrategy(SomeStrategy strategy) {
  3.  // ERREUR
  4.  this.setStrategy(strategy);
  5. }
  6. }


et ma stratégie :

Code :
  1. public class SomeStrategy implements Strategy<Integer,SomeObject> {
  2. public Integer call(SomeObject context) {
  3.  return 0;
  4. }       
  5. }


 
Mais j'ai une erreur sur "this.setStrategy(strategy);", le compilo me sort :


The method setStrategy(Strategy<Integer,? super Context<Integer>> ) in the type Context<Integer> is not applicable for the arguments (SomeStrategy)


J'ai du mal à comprendre l'erreur :/ toujours est-il qu'avec une stratégie implémentée comme ça, tout passe :

Code :
  1. public class SomeStrategy implements Strategy<Integer,Context<Integer>> {
  2. public Integer call(Context<Integer> context) {
  3.  return 0;
  4. }       
  5. }


Mais du coup, je suis obligé de recaster mon objet Context en SomeObject :/
 
Quelqu'un(e) a une idée ? :)

mood
Publicité
Posté le 26-04-2005 à 12:20:01  profilanswer
 

n°1064117
bobuse
Posté le 28-04-2005 à 12:19:35  profilanswer
 

up du jeudi  :hello:  
 
Si je suis pas clair dites-le :D


---------------
get amaroK plugin
n°1064156
nraynaud
lol
Posté le 28-04-2005 à 12:34:54  profilanswer
 

sisi c'est clair, mais j'ai pas le temps de me concentrer là-dessus au boulot, et le soir j'oublie.


---------------
trainoo.com, c'est fini

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

  [generics] un patron strategy paramétrable

 

Sujets relatifs
[Java] Serializer un Generics[Tiger] generics : faire un "bridge"
generics : round twogenerics : unchecked conversion
generics : besoin d'aspirine :D [Résolu]Tableau dont la taille est paramétrable
Ecrire dans un fichier dans un répertoire paramétrable[JAVA]strategy
Strategy ou Validator?[VB6] Créer un menu "paramétrable"
Plus de sujets relatifs à : [generics] un patron strategy paramétrable


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)