je precise je suis en 1.4

je suppose que la question a déjà été posée mais je ne suis pas fichu de mettre la main sur la réponse.

Voilà, je fait un petit bout de code dans lequel je souhaite traiter de manière générique trois types d'objets. Ces types d'objets sont similaires et j'appelle exactement les mêmes méthodes avec les mêmes arguments. Les traitements à effectuer sont identiques également.

J'ai donc commencé naïvement en me disant que j'allais m'en sortir avec un switch case basé sur un paramètre que je passe à ma méthode "générique".
Mais bon je m'en sors mais c'est ultra moche ...

je me dis qu'il y a surement un moyen de passer par quelque chose de vraiment générique (enfin qui traite ces 3 éléments de manière transparente)

Je tente donc avec ClassLoader mais je n'y arrive pas tellement. Si qqun avait une petite piste vers quoi m'orienter pour y arriver.

Voici en gros le code (il est très moche mais c'est pour que vous compreniez mieux en gros quels sont les points où j'ai besoin de générécité)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
switch(type){
			case PROJ:
                               // listeCodes est une sorte d'Iterator
				listeCodes = ProjectCode.load(session, new 
String[]{"CodeValue","Description","CodeTypeName","ParentObjectId"}, ids);
				
				// on parcours cette liste de codes
				if(listeCodes != null && listeCodes.getCount()>0){
					
					Object[] values = new Object[4]; //les objets à insérer dans listeValeurs
					while(listeCodes.hasNext()){
						ProjectCode code = (ProjectCode) listeCodes.next();
// récupération des données en param 2 des loadXXX
					}
				}
				break;
			case ACT://traitement idem sauf type d'objet différent
				listeCodes = ActivityCode.load(session, new String[]{"CodeValue","Description","CodeTypeName","ParentObjectId"}, ids);
				// on parcours cette liste de codes
				if(listeCodes != null && listeCodes.getCount()>0){
					
					Object[] values = new Object[4]; //les objets à insérer dans listeValeurs
					while(listeCodes.hasNext()){
						ActivityCode code = (ActivityCode) listeCodes.next();
					}
				}
				break;
			case RES:
en gros il me faut (mais le code est faux il me semble) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Class maClasse = ClassLoader.loadClass(/* APPEL d'une fonction qui me renvoie le nom de la classe en focntion de "type"*/)
 
listeCodes = maClasse.load(session ....
while(
     maClasse code (maClasse) listeCodes.next();
// suite des traitements identiques
est ce proche de la réalité ? du réalisable ?