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:
1
2
3
4 public interface Persist { public Object getKey(); }
Code:
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:
1
2
3
4 public interface PersistWithStringKey { public String getKey(); }
Or l'appel suivant ne semble pas valideCode:
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:DataModelManager.getInstance().getObject(RefMetier.class,refMetierId)
J'ai sans doute du louper un truc, donc si vous avez une idée ;).Code:public class RefMetier implements PersistWithIntegerKey