cs_anneli
Messages postés17Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention14 juin 2004
-
14 avril 2004 à 18:49
cs_anneli
Messages postés17Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention14 juin 2004
-
14 avril 2004 à 22:03
bonjour,
je cherche a declarer lors de mon programme une nouvelle instance de classe, si il existe une classe d'un certain nom .
voici le code:
Code:
public static void estattribut(Node atribut,Class maClasse)throws Exception{
Field[] attrib=maClasse.getFields();
for (int i=0;i<maClasse.getFields().length;i++){
if (attrib[i].getName().equals(atribut.getLocalName())){
if (maClasse.getName().equals("pack.data.RentalCompany")){
Object rentnouveau= maClasse.newInstance();
}}}}
je n'arrive a creer une instance de class que'en utilisant la methode newInstance, or avec cette methode je n'arrive pas apres a retrouver les attributs de maClasse dans rentnouveau.
J'aurais aimer pouvoir utiliser a la place
maClasse rentnouveau =new maClasse;
mais une erreur survient toujours!!!!
pour plus de precision maClasse est declaree de la maniere suivante:
Code:
try{
Class maClass=Class.forName("ca.uqam.latece.data."+noeudpar);
estattribut(noeudact,maClass);
}catch(Exception ex){
System.out.println("except pas de classe...");
}
voila pour resumé mon probleme es qu'en creeant une instance avec newInstance, je n'arrive pas a recuperer les attributs de maClasse dans rentnouveau et je n'arrive donc pas a leur attribuer des valeurs.
et je n'arrive pas a travailler avec la methode new maClasse, ou la je pourrais manipuler plus facilement les attributs!!!
voila voila
jesper avoir ete clair et pas trop embetante....
merci davance
cs_anneli
Messages postés17Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention14 juin 2004 14 avril 2004 à 20:27
en fait je recupere des noms de balise de fichier XML et je les teste pour savoir si il existe dans mon fichier une classe du meme nom. si oui, je veux creer une instance de cette classe existante. Ensuite je regarde le noeud suivant, et vois si il correspond lui aussi a une classe, si oui je fais la meme chose et sinon je regarde si c'est un attribut de la classe precedente.Si c'est un attribut, j'affecte la valeur de la balise a l'attribut de ma nouvelle instance de classe.
Mon probleme ici se situe dans le fait que je n'arrive a creer une instance de classe que de la facon suivante:
Code:
Object rentnouveau= maClasse.newInstance();
et qu'avec cette declaration, je n'arrive pas a recuperer dans rentnouveau les attributs de maClasse, je n'arrive donc pas a leur affecter de valeur.
C'est pour cela que j'aimerai utiliser plutot le code:
Code:
maClasse rentnouveau =new maClasse();
car avec cette methode rentnouveau recupere les caracteristique de maClasse. Seulement lorsque que j'utilise cette methode, maClasse n'est pas reconnu, j'ai l'erreur suivante:
cs_anneli
Messages postés17Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention14 juin 2004 14 avril 2004 à 21:12
bah jvien daller jeter un coup sur cette fameuse classe et c est pas forcement tres claire!!
penses tu que je sois obliger de passer par la, ou as tu une idee de comment me debrouiller pour poursuivre mon prog??
en tout cas merci
anneli
Vous n’avez pas trouvé la réponse que vous recherchez ?
JBAware
Messages postés174Date d'inscriptionlundi 23 septembre 2002StatutMembreDernière intervention 6 avril 20111 14 avril 2004 à 21:17
8-) JB@WAre
de toute façon tu essais de dire que maClasse est un type ou une classe or ce n'est pas le cas, maClasse est un objet de type Class
donc l'exception qui te dis "maClasse cannot be resolved or is not a type" est normale
autre point
regarde ce que te retourne rentNouveau.getClass();
tu peux très bien casté ton rentNouveau en objet dont le classe correspond à ma classe.
cs_anneli
Messages postés17Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention14 juin 2004 14 avril 2004 à 21:27
c'est vrai que l'erreur que je recois est normale... :blush)
et lorsque je declare rentnouveau de cette facon:
sachant que jai declarer ainsi maClasse:
Class maClasse=maClasse.forName("RentalCompany");
Object rentnouveau= maClasse.newInstance();
alors rentnouveau.getClass(); me retourne maClasse,
donc cela veut dire que rentnouveau est bien une instance de maClasse (n'est ce pas? jcommence a m'y perdre...)
alors pourquoi je ne recupere rien dans rentnouveau??? La classe RentalCompany et donc maClasse ont les attributs (nom, adresse et ID), pourquoi je n'arrive pas a recuperer cela dans rentnouveau??
:)
cs_anneli
Messages postés17Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention14 juin 2004 14 avril 2004 à 21:41
jsui desole de prendre de ton temps, mais jdebute et ces pas evident evident.
quand tu me parles du meme types d'objets, tu veux dire si tout au long de mon fichier XML, je fais par exemple reference au meme Vector ou a la meme Classe.
seulement dans mon cas, les balises du fichier ne correspondent pas toutes a la meme Classe, la Classe qui leur correspond depend de leur nom, j'ai une classe RentCompany qi va avec la balise du meme nom, mais jai aussi une classe client qi va avec la balise du meme nom, etc...
JBAware
Messages postés174Date d'inscriptionlundi 23 septembre 2002StatutMembreDernière intervention 6 avril 20111 14 avril 2004 à 21:55
8-) JB@WAre
non ce que je veux dire c'est que ton fichier xml doit se présenter un peu comme ceci :
<type=RentCompany>
<name=nom><type=String><value="compA">
<name=addresse><type=String><value="qqpart je ne sais ou">
<name=id><type=int><value=1>
mais au final ton fichier xml est une représentation d'une instance de RentCompany avec
nom = compA
Addresse = qqpart je ne sais où
id=1
XMLDecoder quand tu appel sa methode readObject va fonctionner comme ceci
a la première ligne ou tag il va instancié un Objet de type RentCompany.
au deuxième tag il va voir que ce sont les donnée correspondant à l'attribut nom et donc va utiliser la méthode setNom("compA")
et ainsi de suite pour chaque attribut de l'objet RentCompany.
Or comme c'est une classe réutilisable et que toutes les classes héritent de la classe Object, il va retourner ton Objet RentCompany ainsi générer mais casté en Object
à toi par la suite de faire
RentCompany rc = (RentCompany) d.readObject();
JBAware
Messages postés174Date d'inscriptionlundi 23 septembre 2002StatutMembreDernière intervention 6 avril 20111 14 avril 2004 à 22:02
8-) JB@WAre
si j'ai un conseil à te donner c'est d'utliser XMLEncoder pour générer un fichier XML sur un objet simple tel que RentCompany et ensuite decode le avec XMLDecoder.
regarde bien ton fichier XML et tu comprendras comment cela fonctionne.
bon courage
si tu as d'avantage de soucis envoie moi un mail et je te renverrai un exemple