Java: java.lang.ClassCastException

Résolu
betty555 Messages postés 38 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 6 juillet 2010 - 16 juin 2009 à 09:50
betty555 Messages postés 38 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 6 juillet 2010 - 16 juin 2009 à 10:22
Bonjour,
Pourriez vous m'aider svp,

public abstract AbstractInitCarte extends IInitCarte{ //IInitCarte interface de InitCarte
public AbstractInitCarte getInstance(Carte carte)
try
{
Class classe = Class. forName ("com.app.InitCarte");//recupere la classe que l'on veut instancier
// Recuperation le constructeur de InitCarte qui prend en paramètre une classe carte
java.lang.reflect.Constructor constructeur =
classe.getConstructor (new Class [] {Class.forName ("com.app.sa.Carte")});
initCarte = (AbstractInitCarte)constructeur. newInstance (new Object [] {carte});
// Mais j'ai une exception déclenchée, java.lang.ClassCastException, vu que j'essaie de caster un object...
}catch .....
return initCarte;
}

*****************
l'appel est réalisé dans une autre classe, je voulais remplacer InitCarte par sa classe abstraite:
changer :
final InitCarte initCa = new InitCarte(carte);
initCa.getNom();
et avoir:
AbstractInitCarte initCa = AbstractInitCarte.getInstance(carte);
initCa.getNom();
*****************

Merci pour votre aide,

1 réponse

betty555 Messages postés 38 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 6 juillet 2010
16 juin 2009 à 10:22
c'est résolu:

public abstract AbstractInitCarte extends IInitCarte{ //IInitCarte interface de InitCarte
public IInitCarte getInstance(Carte carte)
try
{
Class classe = Class. forName ("com.app.InitCarte");//recupere la classe que l'on veut instancier
// Recuperation le constructeur de InitCarte qui prend en paramètre une classe carte
java.lang.reflect.Constructor constructeur =
classe.getConstructor (new Class [] {Class.forName ("com.app.sa.Carte")});
initCarte = (IInitCarte)constructeur. newInstance (new Object [] {carte});
// j'ai fait un cast avec l'interface mais pas la classe.
}catch .....
return initCarte;
}
*******************
IInitCarte initCa = AbstractInitCarte.getInstance(carte);
initCa.getNom();
*****************

Et ca marche,
Merci,
3
Rejoignez-nous