Bon, je pense pouvoir m'y prendre autrement puisque de toute façon, tous mes objets dynamiques héritent d'une seule et même classe
Couche1 extends ObjetCommunicant
ObjetCommunicant test1 = new Couche 1();
Donc, à l'execution je peux éditer le fichier Couche1.java, lui donner un autre nom temporaire (exemple Couche1-1564156), le compiler, le charger en utilisant Class.forName(Couche1-1564156), puis faire pointer test1 vers ce nouvel objet en le castant en ObjetCommunicant.
Class c = CLass.forName(Couche1-1564156);
test1 = (ObjetCommunicant) c.newInstance(args);
Faut savoir que je me fous d'avoir une perte de précision sur les objets, puisque de toute façon les objets ne communique entre eux qu'au moyen de méthodes abstraites héritées de la super classe commune.
C'est censé marcher ?