IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

reflexion et type de retour des méthodes


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 8
    Points
    8
    Par défaut reflexion et type de retour des méthodes
    Salut à tous !

    J'aimerai pouvoir utiliser la reflexion sur le type de retour de méthode afin de rendre plus générique les méthodes getObjetSuivant() et getTousLesObjets().

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    import java.io.*;
    import java.util.*;
     
    public class DeserialisationObjets{
     
    	// Attributs
    	Class				classe;
    	FileInputStream 	fis;
    	ObjectInputStream	ois;
     
    	// Constructeur
    	public DeserialisationObjets(String URL, String classe) throws 	FileNotFoundException, 
    																	ClassNotFoundException,
    																	IOException {				
    			this.classe		= Class.forName(classe);
            	fis 			= new FileInputStream(URL); 	
                ois 			= new ObjectInputStream(fis);
    	}
     
    	//==========================================================================
     
    	// Méthodes
    	public classe.getName() getObjetSuivant() throws IOException {
    		classe.getName() objet = (classe.getName()) ois.readObject();				
    		return objet;
    	}
     
    	//==========================================================================
     
    	public Vector getTousLesObjets() throws IOException{
    		classe.getName() 	objet 			= null;
    		Vector				totaliteObjets	= new Vector();
    		while( objet = getObjetSuivant() !=null ){
    			totaliteObjets.addElement(objet);
    		}
    		return totaliteObjets;
    	}
     
    	//==========================================================================	
     
    	public void cloreLeFlux(){
    		ois.close();
    	}
     
    	public void reOuvrirLeFlux(){
    		ois = new ObjectInputStream(fis);		
    	}
    	//==========================================================================
     
    }

    bien entendu, cela ne marche pas
    les lignes directement incriminée sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    classe.getName() objet = (classe.getName()) ois.readObject();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public classe.getName() getObjetSuivant() throws IOException {
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          classe.getName()    objet          = null;
    Peut être pourrez vous me guider vers le comportement à adopter face à cette situation afin de pouvoir fixer un type générique à une variable ainsi qu'à une valeur de retour de méthode.

    J'aimerai également savoir si vous trouvez "sale" cette façon de fonctionner ou non.

    Merci à tous.

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    classe.getName() objet = (classe.getName()) ois.readObject();


    La reflexion n'est pas claire dans ta tête . Je comprends ce que tu veux faire mais ca ne s'utilise pas comme cela. Lis un tutorial sur ce sujet avnt de te lancer dans l'aventure.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Oui, autant pour moi !!

    En réalité, ce que je souhaiterais faire, c'est l'équivalent de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    import java.io.*;
    import java.util.*;
     
    public class DeserialisationObjets{
     
    	// Attributs
    	Class				classe;
    	FileInputStream 	fis;
    	ObjectInputStream	ois;
     
    	// Constructeur
    	public DeserialisationObjets(String URL, String classe) throws 	FileNotFoundException, 
    																	ClassNotFoundException,
    																	IOException {				
    			this.classe		= Class.forName(classe);
            	fis 			= new FileInputStream(URL); 	
                ois 			= new ObjectInputStream(fis);
    	}
     
    	//==========================================================================
     
    	// Méthodes
    	public classe getObjetSuivant() throws IOException {
    		classe objet = (classe) ois.readObject();				
    		return objet;
    	}
     
    	//==========================================================================
     
    	public Vector getTousLesObjets() throws IOException{
    		classe	 	objet 			= null;
    		Vector		totaliteObjets	= new Vector();
    		while( objet = getObjetSuivant() !=null ){
    			totaliteObjets.addElement(objet);
    		}
    		return totaliteObjets;
    	}
     
    	//==========================================================================	
     
    	public void cloreLeFlux() throws IOException{
    		ois.close();
    	}
     
    	public void reOuvrirLeFlux() throws IOException{
    		ois = new ObjectInputStream(fis);		
    	}
    	//==========================================================================
     
    }
    Alors bien entendu, ceci est également faux (erreurs de type: cannot find simbol class classe).

    En tout cas merci pour ta réponse et je vais me documenter plus en détail sur ce sujet, mais je reste toujours à l'écoute de vos remarques et conseils.

    @ +

Discussions similaires

  1. Type de retour des procédure Stockée
    Par Solaren dans le forum Débuter
    Réponses: 1
    Dernier message: 27/01/2012, 11h09
  2. Type de retour des surcharges d'opérateur
    Par syl1405 dans le forum C++
    Réponses: 8
    Dernier message: 16/06/2010, 17h22
  3. Type de retour des WebMethod
    Par oclone dans le forum Services Web
    Réponses: 2
    Dernier message: 11/06/2009, 15h57
  4. Réponses: 6
    Dernier message: 18/04/2009, 11h37
  5. Heritage et type de retour des methodes
    Par belfo dans le forum C++
    Réponses: 20
    Dernier message: 23/12/2006, 23h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo