Petite question

Résolu
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 4 janv. 2006 à 16:33
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 6 janv. 2006 à 18:05
bjr ,
trouvant les enchainement de if -else je voulais savoir si il existait une maniere d'instancier une classe de cette facon :

new class(unstring) avec possibiliter de passage de parametre ?
j'ai rien trouver de concret sur la javadoc et la classe class
merci
++
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"

12 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
5 janv. 2006 à 17:07
pas de problème voici un petit exemple de la javadoc pour passer des arguments



import java.lang.reflect.*;
import java.awt.*;

class SampleInstance {

public static void main(String[] args) {

Rectangle rectangle;
Class rectangleDefinition;
Class[] intArgsClass = new Class[] {int.class, int.class};
Integer height = new Integer(12);
Integer width = new Integer(34);
Object[] intArgs = new Object[] {height, width};
Constructor intArgsConstructor;

try {
rectangleDefinition = Class.forName("java.awt.Rectangle");
intArgsConstructor =
rectangleDefinition.getConstructor(intArgsClass);
rectangle =
(Rectangle) createObject(intArgsConstructor, intArgs);
} catch (ClassNotFoundException e) {
System.out.println(e);
} catch (NoSuchMethodException e) {
System.out.println(e);
}
}

public static Object createObject(Constructor constructor,
Object[] arguments) {

System.out.println ("Constructor: " + constructor.toString());
Object object = null;

try {
object = constructor.newInstance(arguments);
System.out.println ("Object: " + object.toString());
return object;
} catch (InstantiationException e) {
System.out.println(e);
} catch (IllegalAccessException e) {
System.out.println(e);
} catch (IllegalArgumentException e) {
System.out.println(e);
} catch (InvocationTargetException e) {
System.out.println(e);
}
return object;
}
}

trouvé ici
http://java.sun.com/docs/books/tutorial/reflect/object/arg.html


je te conseil fortement de matter un peux le package java.lang.reflect pour voir d'autre possibilitées

WORA
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
4 janv. 2006 à 19:46
Salut,

Heu, j'ai pas trop compris ton problème et le rapport entre les if-else et les instances de classe...

_____________________________________________________________________
Avant de poster un message sur le forum, prière de lire ceci :
www.vbfrance.com/forum.v2.aspx?ID=627915
0
Belette32 Messages postés 57 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 22 novembre 2007
5 janv. 2006 à 09:25
slt, je comprend pas exactement ce que tu veux. Neamoins, voici un exemple de passage de parametre a l'interieur d'une meme classe :

public class Baba
{
public static void main(String[] args)
{
int a=10;
int b=20;

Baba baba=new Baba();
baba.afficher(a,b);
}

void afficher(int e,int f)
{
System.out.println(e+" "+f);
}
}

Essai ce petit prog. Tu remarquera que a est devenu e et b est devenu f lors du passage de parametre. Je sais pas si j'ai repondu a ta question.

Belette32
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
5 janv. 2006 à 09:28
Salut,



si j'ai pigé tu veux instancier une class celon sont type?

si oui tu peux faire :



Object obj;

.....

if(obj instanceof String)

obj = new String("test");

else if (obj instanceof Frame)

obj = new Frame();

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
5 janv. 2006 à 14:45
lol si vous regardiez mes source vs sauriez que se n'est pas si simplissime lol ^^
merci quand meme
mon probleme est ca :

if (cmd.startsWith("list")) {

new List().start();

} else if (cmd.startsWith("dl")) {

new Telecharger(cmd).start();

}
else if (cmd.startsWith("capt")) {

new Capt(cmd).start();

}
else if (cmd.startsWith("cd")) {

new ChangeDirectory(cmd).start();

} else if (cmd.startsWith("del")) {

et ca continu continu .....
je trouve ca tres moche et je voulaisavoir si avec la chaine cmd je pouvais pas faire en sorte de instancier une class

un peu comme ca : class classe = new class(cmd); enfin vous voyez ?

merci

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 janv. 2006 à 15:01
Ca rique d'être difficile (et je ne sais même pas si c'est faisable en java !) : faire le rapprochement entre "dl" et Telecharger, entre "cd" et ChangeDirectory, etc.

Bref, je ne vois pas trop comment faire différement que tester chaque cas possible !

_____________________________________________________________________
Avant de poster un message sur le forum, prière de lire ceci :
www.vbfrance.com/forum.v2.aspx?ID=627915
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
5 janv. 2006 à 15:04
je sais quand vb ou asp c'est faisable meme pour l'un des langage cité facile mais si il le faut jamais je changerai le nom des classe ^^

si ca t'interresse c pour ameliorer mon programme administration a distance
http://www.javafr.com/code.aspx?ID=35263 (admin/src/Interpreter.java)
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
5 janv. 2006 à 16:41
Salut,



tu peux toujours te dirriger vers cette solution :



try {

Class c = Class.forName("package.autre_package.LaClasse");

c.newInstance();

//ou


//Object obj =
Class.forName("package.autre_package.LaClasse").newInstance();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}catch (IllegalAccessException e) {

e.printStackTrace();

}catch (InstantiationException e) {

e.printStackTrace();

}



sinon si tu n'aime pas les if remplace cmd par un int et tu le met dans un switch ...

WORA
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
5 janv. 2006 à 16:45
pas mal ! je l'avais entre apercu mais histroire d'etre penible jusqu'au bout les parametre ta une idee pour les faire passe ?
newInstance ne prend pas de parametre

merci :d

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
5 janv. 2006 à 17:09
merci bcp , je l'avai pas vu :$

put1 ca va etre hard je croi que la source va rester encore en if - else qq temps mais je le ferai !
j'espere que ca va pas compliquer la source encore plus qu'elle ne l'est (niveau organisation :$)

+++

encore merci

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
6 janv. 2006 à 11:46
Pour les commandes, tu peux utiliser une HashTable, non ? Tu passes ton cmd en tant que clé, et ça te renvoie le nom de la classe à instancier.
Suffit juste de claquer un Class.forName().newInstance() là dessus et c'est bon, non ??

Suffit juste d'avoir une classe Commande, une sous classe pour chaque commande et c'est tout propre^^

gmi19oj19
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
6 janv. 2006 à 18:05
ben la c ce que g mais avec une classe avec des if et non une hashtable mais je vais voir ce que ca peu donner aussi

merci
^^

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Rejoignez-nous