Classe qui peut prendre plusieurs variables

Résolu
javasfutur - 15 mars 2013 à 14:34
 javasfutur - 17 mars 2013 à 23:06
Bonsoir,

je suis entrain de developer une methode qui peut prendre un ensemble de type et faire un traitement d'un formulaire via ses types mais jusqu'à maintenant je n'arrive à le faire que pour le string , si quelqu’un peut me guider vers le bon chemin afin de pouvoir spécifier tous les types en entré et avoir un objet casté en type dans la sortie selon le type d'entrée

merci d'avance

12 réponses

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
17 mars 2013 à 11:58
public Class converstion(String chaine, Class clazz) throws ClassNotFoundException {
Class rtn = null;
Class test = instanciation("reflect.UserBeanIn", "getPrenom");
if (test.getClass().equals(clazz)) {
try {
System.out.println("true" + Integer.parseInt(chaine));
} catch (Exception e) {
System.out.println("false");
}

}
return rtn;
}



et

converstion("12", Integer.class); 	


Ça pourrait aller ?
3
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
16 mars 2013 à 09:59
Salut,

Utilises les types paramétrés.
0
En réalité ce n'est pas ce que je cherche , en fait j'ai une classe javabean dans laquelle j'ai un ensemble de getter et setter et donc parmi eux je veux un getter int par exemple alors que dans le textfield par exemple tout ce qui est entré est considéré comme string et donc mes javabeans ne peuvent etre que de type string :(
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
17 mars 2013 à 11:02
Désolé, je ne comprend pas ce que tu veux faire.

Je comprend ceci :

public class PasCompris extends JFrame {

private JPanel contentPane;
private JTextField textField;

String getTextField() {
String text = textField.getText();
return text;
}

int getTextFieldAsInt() throws NumberFormatException {
String text = textField.getText();
return Integer.parseInt(text);
}

// etc.
}
0

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

Posez votre question
c'est le meme principe que ton code mais avec une fonction et des beans cad je récupère tout d'abor le type de retour de mon bean par la fonction instance après j'essaye de faire un test pour voir si mon bean est d'un type bien specifique je vais les PArse maintenant j'essaye seulement pour int et donc je veux pouvoir appeller ma fonction en lui passant int ce qui est impossible en java eclipse me souligne le mot voilà un exemple pour avoir une idée
Class Bean{
int age;
String nom;

public int getAge(){
return age;}
public vois setAge(int age){
this.age=age;

...}

//cette class me permetterade retourner le type de mon bean
public Class instance(String nom,String method) throws ClassNotFoundException{
Class type = null;

Class c=Class.forName(name);
Method[] m=c.getMethods();
for (int i = 0; i < m.length; i++) {
if(m[i].getName()==method){
type =m[i].getReturnType();
break;
}
}
return type;
}
//dans cette classe je teste si mon bean est d'un type specifique
public Class conver(String chaine,Object testobject) throws ClassNotFoundException{
Class rtn =null;
Class test= instanciation("reflect.UserBeanIn","getPrenom");
if(test.toString().equals(testobject)){
//Integer.parseInt(chaine);
try{
System.out.println("true"+Integer.parseInt(chaine));
}catch(Exception e){
System.out.println("false");
}

}
return rtn;


}
public static void main(String[] args) throws ClassNotFoundException {

//le problème existe ici je ne peux pas ecrire int en paramètre d'une fonction
converstion("12",int);
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
17 mars 2013 à 12:02
ou plutôt test.equals(clazz)
0
oui ça marche mais seulement pour les methodes envolopes mais pas pour int,char et autres
0
plutot les types envolopes
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
17 mars 2013 à 13:15
int, char, byte, etc. sont des types primitifs.

tu peux simuler :
public Class conver(<String>, <Class variable>)

l'artifice c'est de passer par Object, Class ou une chaine identifiant une classe qu'on retrouve avec un Class.forName, ou autre.

Je ne vois pas comment tu pourrais avoir :
public Class conver(<String>, <type primtif variable>)

Sinon passer par les types enveloppes et revenir au premier cas.
0
comment je oeux passer par les types envolpes et revenir au premier cas?
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
17 mars 2013 à 13:52
Peut être comme ça :

public Class converstion(String chaine, Class clazz) throws ClassNotFoundException {
Class rtn = null;
Class test = instanciation("reflect.UserBeanIn", "getPrenom"); // A changer ?
if (test.equals(clazz)) {
try {
if (clazz.getClass().getName().equals("java.lang.Integer"))
System.out.println("true" + Integer.parseInt(chaine));
else if (clazz.getClass().getName().equals("java.lang.Long"))
System.out.println("true" + Long.parseLong(chaine));
// etc.
else System.out.println("false");
} catch (Exception e) {
System.out.println("false");
}
}
return rtn;

}

void convertions() {
try {
converstion("12", Integer.class); 	
converstion("12", Long.class); 	
} catch (ClassNotFoundException e) {

}
}

0
en fait j'ai procédé par un if tout d'abord qui me permet de savoir si le type retourné est isPrimitive dans le cas true j'apelle une fonction qui prendrera en argument 2 string et donc je compare ensuite avec int en tant que string.

et merci infiniment pour votre aide ça ma vraiment aidé :)
0
Rejoignez-nous