Factory avec classe comme parametre
rompelstilchen2
Messages postés
5
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'essaye de creer une factory qui prend en parametre un type de classe
[code]
public PropControl Create(Class<? extends PropControl> cls)
{
if(cls==HouseControl.class) <---- ERROR
{
here I create a new instance of HouseControl (that inherits PropControl)
}
}
[/code]
j'ai cette erreur:
incomparable types: Class<CAP#1> and Class<HouseControl>
where CAP#1 is a fresh type-variable:
CAP#1 extends PropControl from capture of ? extends PropControl
ok je compare des types différents, mais comment je fais ?
merci
j'essaye de creer une factory qui prend en parametre un type de classe
[code]
public PropControl Create(Class<? extends PropControl> cls)
{
if(cls==HouseControl.class) <---- ERROR
{
here I create a new instance of HouseControl (that inherits PropControl)
}
}
[/code]
j'ai cette erreur:
incomparable types: Class<CAP#1> and Class<HouseControl>
where CAP#1 is a fresh type-variable:
CAP#1 extends PropControl from capture of ? extends PropControl
ok je compare des types différents, mais comment je fais ?
merci
A voir également:
- Factory avec classe comme parametre
- Format factory - Télécharger - Conversion & Codecs
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Parametre windows - Guide
- Netflix paramètre compte - Guide
2 réponses
Bonjour,
La méthode isAssignableFrom devrait faire ce que tu veux. C'est un peu le même principe que
La méthode isAssignableFrom devrait faire ce que tu veux. C'est un peu le même principe que
instanceofmais pour une classe.
mais invoke/instanceof est le signe d'une mauvaise implementation
ma factory doit aussi checker pour tous les cas de figures, c'est pas du tout OO
public static <E> void example(Class<? extends Collection> collectionClass) { if (List.class.isAssignableFrom(collectionClass)) { Class<? extends List> listClass = (Class<? extends List>) collectionClass; // ... } if (Set.class.isAssignableFrom(collectionClass)) { Class<? extends Set> setClass = (Class<? extends Set>) collectionClass; // ... } // ... }