Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1628 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Introspection et instances

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Introspection et instances

n°378486
Giansolo
ben ... rien....
Posté le 30-04-2003 à 15:55:04  profilanswer
 

Bonjour a tous,
 
je souhaite créer une instance d'un objet a partir de la valeur d'une chaine de caractères.
j'ai essayé forName(String machaine); et getClass, mais je pietine...
 
par exemple :
public Classee(String str1)
{
   Toto un_essai = Class.forName(str1);
}
 
Le compilateur ne veut pas de ca,
il signale : "je peux pas convertir Class en Toto"...
comment faire???  
merci
 
Giansolo

mood
Publicité
Posté le 30-04-2003 à 15:55:04  profilanswer
 

n°378520
souk
Tourist
Posté le 30-04-2003 à 16:02:20  profilanswer
 

un cast nan ?

n°378537
benou
Posté le 30-04-2003 à 16:05:56  profilanswer
 

Code :
  1. public Classee(String str1)
  2. {
  3.   Toto un_essai = (Toto) Class.forName(str1).newInstance();
  4. }



Message édité par benou le 30-04-2003 à 16:11:53

---------------
ma vie, mon oeuvre - HomePlayer
n°378559
Giansolo
ben ... rien....
Posté le 30-04-2003 à 16:09:35  profilanswer
 

avec un cast :
Toto un_essai = (Toto) Class.forName(str1);
il me sort pratiquement le meme refrain, a savoir :
"Cannot cast from java.lang.Class to totopakage.toto"
 
les imports sont bien faits (enfin je pense).
 
merci néanmoins.

n°378574
benou
Posté le 30-04-2003 à 16:12:08  profilanswer
 

j'ai édité.
 
y a quoi dans ta String exactement ?


---------------
ma vie, mon oeuvre - HomePlayer
n°378580
Giansolo
ben ... rien....
Posté le 30-04-2003 à 16:13:16  profilanswer
 

Dans ma String il y a le nom d'une Classe qui implemente une interface de type Toto


Message édité par Giansolo le 30-04-2003 à 16:14:18
n°378631
benou
Posté le 30-04-2003 à 16:31:19  profilanswer
 

Giansolo a écrit :

Dans ma String il y a le nom d'une Classe qui implemente une interface de type Toto


si elle a bien un constructeur vide, tu fais le newInstance(), tu castes, et ca roule !


---------------
ma vie, mon oeuvre - HomePlayer
n°378636
nerisson
Pic-pic
Posté le 30-04-2003 à 16:32:09  profilanswer
 

Chez moi ca marche:

Code :
  1. String s = (String)Class.forName("java.lang.String" ).newInstance();


---------------
Light is right
n°378647
Giansolo
ben ... rien....
Posté le 30-04-2003 à 16:36:39  profilanswer
 

Oui ca marche,
merci beaucoup a tous

n°379381
Giansolo
ben ... rien....
Posté le 01-05-2003 à 16:03:21  profilanswer
 

arg j'ai un probleme et j'aurais encore besoin de votre aide (et en plus pendant cette journée du NON-travail!   :sweat: )...
 
ca fait suite au probleme precedent, donc voici un bout du programme :
 

Code :
  1. public MetricDoclet(String metricstr)
  2. {
  3. try
  4. {
  5.  System.out.println("**1**" );
  6.  Metric metric=(Metric)Class.forName(metricstr).newInstance();
  7.  System.out.println("**2**" );
  8. ...


 
j'appelle cette méthode avec comme parametres :
metricstr: "Line"
et en considerant ce (petit) schema explicatif:
 
package metric---->interface Metric--implements-->Classe Line
package metric--contient-->Classe MetricDoclet
 
ca n'arrive pas au **2** ca me jete avant. Avec le StackTrace, ca donne :
--------------------------------------
java.lang.Throwable(java.lang.String)
java.lang.Exception(java.lang.String)
metric.MetricDoclet(java.lang.String)
void application.Application.main(java.lang.String [])
--------------------------------------
 
quelqu'un peut-il m'aider?
merci
 
edit:a la compil ca passe, a l'execution ca jete


Message édité par Giansolo le 01-05-2003 à 16:06:26
mood
Publicité
Posté le 01-05-2003 à 16:03:21  profilanswer
 

n°379390
darklord
You're welcome
Posté le 01-05-2003 à 16:14:09  profilanswer
 

essaie déjà de ne pas faire TOUT lors de la meme instruction et ca te permettra de localiser ton problème. Par exemple
 

Code :
  1. System.out.println("**1**" );
  2. Class c = Class.forName(metricstr);
  3. Object m = c.newInstance();
  4. Metric metric = (Metric) m;
  5. System.out.println("**2**" );



---------------
Just because you feel good does not make you right
n°379414
benou
Posté le 01-05-2003 à 16:34:42  profilanswer
 

si Line est une interface, tu peux pas l'instancier ...


---------------
ma vie, mon oeuvre - HomePlayer
n°379469
Giansolo
ben ... rien....
Posté le 01-05-2003 à 17:19:53  profilanswer
 

euh non, Line est une classe qui implemente l'interface Metric

n°379472
Giansolo
ben ... rien....
Posté le 01-05-2003 à 17:20:16  profilanswer
 

mais, ne vous fatiguer plus je crois avior trouver...
merci quand meme pour vos reponses... :)

n°379488
darklord
You're welcome
Posté le 01-05-2003 à 17:34:14  profilanswer
 

Giansolo a écrit :

mais, ne vous fatiguer plus je crois avior trouver...
merci quand meme pour vos reponses... :)


 :fou: ce que ca peut me gonfler .... Donne au moins la solution pour que ca soit répertorié quoi ...


---------------
Just because you feel good does not make you right
n°384625
matthias
Posté le 06-05-2003 à 16:01:11  profilanswer
 

DarkLord a écrit :


 :fou: ce que ca peut me gonfler .... Donne au moins la solution pour que ca soit répertorié quoi ...


 
gonflage bis ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Introspection et instances

 

Sujets relatifs
Imprimer un fichier (HTML) en JAVA[Java][Livre] Apprendre !
[JAVA]Plein de questions de débutantdemande aide surr une question tres precise en java(servlet)
Executer une commande en JAVAobtenir un .exe ou similaire en java ???
Comment executer des commandes dos ou java ?java aide,question facile
[edit] aide java (comment inserer une image dans une fenetre ??)Mais où est le problème ?? Sql/Java [RESOLU]
Plus de sujets relatifs à : [Java] Introspection et instances


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR