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 :

Serialisation et interface


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut Serialisation et interface
    Dans un soucis de généricité, j'aimerais pouvoir faire passer a un client des classes sérialisée, qui implementent toutes une meme interface, sans avoir a connaitre le type exact de la classe.

    Imaginons une inteface qui a pour méthodes start() et stop(). Et des classes A, B et C qui implémentent cette interface.

    Je voudrais qu'au niveau du client, il désérialise la classe, et qu'elle soit A, B ou C il puisse apeller classeDéserialisée.start() par exemple, sans avoir a déclarer le type précis de la classe.

    Je sais pas si je suis tres clair.

    Dans le tutoriel http://ydisanto.developpez.com/tutor...partie1/#LII-F quand il désérialise la classe personne, il déclare une personne a null et cast le retour.

    J'aimerais ne pas avoir a déclarer le type précisément.

    J'espere que c'est possible et que vous pourrez m'aider.

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    non testé ( je dis peut-être des co...... ), j'aissairai un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FileInputStream fis=new FileInputStream("monfichier");
    ObjectInputStream ois=new ObjectInputStream(fis);
    ((MonInterface)ois.readObject).start();
    ...
    La question est de savoir si on peut faire le cast dans ce cas avec une Interface ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    Oui, un truc comme ça serait assez pratique, mais il me semble qu'on ne peut pas instancier directement une interface.

    Je suis un poil léger de ce coté la de la POO mais peut etre qu'on faisant hériter chacune des classes d'une meme classe mere sérialisable elle aussi, il suffirait de faire ClasseMere cm = (Classemere) ois.readObject; et apres cm.start();

    J'espère que ce que je cherche a faire est possible.

    Merci d'avance

  4. #4
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    En fait dans mon code je ne parle pas d'instance d'interface.
    En fait que je pense m'adresser la l'Interface ( avec une majuscule ) de l'objet renvoyé pour lui soumettre un start().
    Je testerais ça cet après-midi tient.

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par iohack
    non testé ( je dis peut-être des co...... ), j'aissairai un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FileInputStream fis=new FileInputStream("monfichier");
    ObjectInputStream ois=new ObjectInputStream(fis);
    ((MonInterface)ois.readObject).start();
    ...
    La question est de savoir si on peut faire le cast dans ce cas avec une Interface ?
    Oui c'est ça...

    Citation Envoyé par Faiche
    il me semble qu'on ne peut pas instancier directement une interface.
    Tu ne l'instancie pas là, tu désérialises l'objet que tu castes en MonInterface...

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    Bon, désolé, je suis un petit peu lent, mais avec cette methode, on peut apeller le start() mais pas le stop() vu qu'on a pas de nom de variable et qu en rapellant un read object on aura surement pas la meme chose.

  7. #7
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Faiche
    Bon, désolé, je suis un petit peu lent, mais avec cette methode, on peut apeller le start() mais pas le stop() vu qu'on a pas de nom de variable et qu en rapellant un read object on aura surement pas la meme chose.
    Comment ça on n'a pas de nom de variable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonInterface var = (MonInterface) ois.readObject();

  8. #8
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    Ben je pensais pas du tout qu'on pouvait faire ça, mais ça m'arrange carrément.

    Merci, je vais tester de ce pas.

  9. #9
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par ®om
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonInterface var = (MonInterface) ois.readObject();
    avec un bémol: le type effectif de la classe doit quand même être connu du mécanisme de désérialisation du client même si le code ne le connaît officiellement pas. avec des clients en réseau il faut être prudent et bien connaître le musique.

Discussions similaires

  1. Serialisation d'une interface graphique
    Par gwendal86 dans le forum C#
    Réponses: 8
    Dernier message: 10/11/2008, 15h10
  2. Réponses: 11
    Dernier message: 24/11/2006, 22h30
  3. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  4. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  5. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27

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