Salut,
Je commence tout juste à essayer de faire mes propres classes génériques, ou plutôt méthodes en l'occurence. Donc peut être que je ne prends tout simplement pas la bonne approche.
J'ai définis les interfaces suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface Persist { public Object getKey(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface PersistWithIntegerKey extends Persist { public Integer getKey(); }Et dans une classe de type "fabrique" j'ai créé les méthodes suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface PersistWithStringKey { public String getKey(); }Or l'appel suivant ne semble pas valide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public <Ts extends PersistWithStringKey> Ts getObjet(Class<Ts> c, String stringId) throws SQLException { return (Ts)sqlMap.queryForObject("get"+c.getSimpleName(),stringId); } public <Ti extends PersistWithIntegerKey> Ti getObjet(Class<Ti> c, Integer intId) throws SQLException { return (Ti)sqlMap.queryForObject("get"+c.getSimpleName(),intId); }Alors que RefMetier implémente bien l'interface PersistWithIntegerKey :
Code : Sélectionner tout - Visualiser dans une fenêtre à part DataModelManager.getInstance().getObject(RefMetier.class,refMetierId)J'ai sans doute du louper un truc, donc si vous avez une idée .
Code : Sélectionner tout - Visualiser dans une fenêtre à part public class RefMetier implements PersistWithIntegerKey
Partager