Tu peux également forcer le type si tu connais l'interface à utiliser :
Solver obj = factory.getSolver(...);
((Runnable)obj).run();
ou directement :
Runnable obj =...
Type: Messages; Utilisateur: dlemoing
Tu peux également forcer le type si tu connais l'interface à utiliser :
Solver obj = factory.getSolver(...);
((Runnable)obj).run();
ou directement :
Runnable obj =...
Il faut que ta méthode run() soit définie dans la classe Solver (ou déclarée en tant que méthode abstraite pour être redéfinie dans les sous-classes, mais alors Solver devient une classe abstraite)....
Désolé de t'avoir fait penser que je considérais comme idiot ce que tu proposais. C'est juste que j'ai tendance à considerer qu'on ne doit pas abuser de l'utilisation du "static".
Les membres et...
Remplace System.out.println(object.get_type()); par System.out.println(object.getClass()); et tu verras que ton objet est bien un objet de type Simmetrix.
Je ne sais pas de quel pattern factory tu parles. Moi je te parle des patterns du GoF (Gang of Four), le livre de référence sur le sujet.
Pour plus de détails sur les patterns factory (et du GoF)...
Montre le code de ta méthode getSolver et reformule ta question, je ne comprends pas bien. Qu'est ce que te donne System.out.println(object.get_type()); ?
Faux. Ce que tu dis est contraire aux patterns Abstract Factory et Factory Method. Comment pourrais tu substituer une factory par une autre en utilisant des méthodes statiques ?
Le classpath est...
ta classe est dans un package ?
Si oui :
Solver object = (Solver)factory.getSolver("tonpackage.Simmetrix");
ou alors, tu prefixe dans la méthode getSolver :
public Solver getSolver(String s) {...
public static void main(String[] args) throws Exception
Comme ca tu ne te poseras pas trop de questions pour commencer. Tu devras par contre t'interesser à la gestion des Exception par la suite.
Si Solver et Analysis sont deux classes totalement différents alors tu es obligé de retrouné un Object...[/quote]Vrai. Pas d'interface commune ? Pas de super classe commune ?
Autre solution, il...
Class maClasse = Class.forName(nomClasse);
if (Solver.class.isAssignableFrom(maClasse) || Analysis.class.isAssignableFrom(maClasse) || ...) {
//si constructeur sans arguments
return...
Class maClasse = Class.forName(nomClasse);
if (!TaSuperClasse.class.isAssignableFrom(maClasse));
throw new Exception ("La classe n'implemente pas TaSuperClasse");
//si constructeur sans...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.