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();
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public interface PersistWithStringKey
{
	public String 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
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);
}
Or l'appel suivant ne semble pas valide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
DataModelManager.getInstance().getObject(RefMetier.class,refMetierId)
Alors que RefMetier implémente bien l'interface PersistWithIntegerKey :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public class RefMetier implements PersistWithIntegerKey
J'ai sans doute du louper un truc, donc si vous avez une idée .