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 :

Création d'objects "on the fly"


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut Création d'objects "on the fly"
    Hello,

    Je cherche à faire un truc un peu "bizarre"...

    J'ai un objet o1 de classe O1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public Class O1{
      public int var1 = 3;
      public int var2 = 34;
      public int var3 = 345;
    }
    Et je le parcours par réfléxion. Ce que je voudrais, c'est créer un nouvel objet qui contiennent certains des champs de O1...

    Par exemple, un objet qui contienne les deux premiers...

    En fait, ma question, c'est: Si j'ai un Field f, est-ce que je peux l'ajouter à un objet (que je viens de créer)??

    Je sais que ça peut paraître bizarre et insensé, mais dans mon cas ça me serait vraiment utile!

    Merci d'avance...

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    La réponse est non : quand tu crées le nouvel objet, tu es bien obligé de lui spécifier un type. Si le type de l'objet créé est O1, alors il disposera de tous les attributs de la classe O1.
    Quel est le besoin ?

  3. #3
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Ouais, c'est bien ce que je pensait! En fait, le but est le suivant: Je créé un objet. Ensuite, je load ses valeurs depuis un XML (désérialisation). Seulement, il n'y a en principe que certaines valeurs que cela modifie, car la plupart des valeurs ne sont pas spécifiées dans le XML et donc ce sont les valeurs par défaut qui sont prises.

    Mon but serait de sérialiser (sauver) dans un XML les valeurs de cet objet, mais seulement celles qui ont été modifiées. Alors que (j'utilise Skaringa) c'est tout l'objet qui est sérializé!

    Bon, ca peut paraitre compliqué. Un exemple:
    Mon objet XML (sa classe):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class DatabaseConfig {
     
        public DatabaseConfig() {
        }
     
        @Description(description="Address of database server")
        public String serverName = "localhost";
     
        @Description(description="Database name")
        public String databaseName = "TestDatabase";
     
        @Description(description="Password to database access")
        public String databasePass = "pass@database";
    }
    Le XML de configuration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <DatabaseConfig xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="i0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Database configuration.xsd">
        <serverName>192.168.1.111</serverName>
    </DatabaseConfig>
    dans lequel on constate que seul la valeur serverName est modifiée

    Ensuite, je load ce XML dans mon objet, et les valeurs sont donc:
    - serverName = "192.168.1.111"
    - databaseName = "TestDatabase"
    - databasePass = "pass@database"

    Maintenant, ce que je voudrais, c'est créer un XML (sérialisation) avec Skaringa, mais ne contenant que la valeur serverName! Est-ce possible? Car avec Skaringa, c'est tout l'objet qui est sérializé d'un coup...

    Merci, A+

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Quand tu fais étendre Serializable à un objet, tu peux faire ta propre "serialization", rien n'oblige à utiliser le mode standard... Il suffit de définir les méthodes suivante
    private void writeObject(java.io.ObjectOutputStream out)
    throws IOException
    private void readObject(java.io.ObjectInputStream in)
    throws IOException, ClassNotFoundException;

    (Voir la doc sur Serializable)
    http://java.sun.com/j2se/1.4.2/docs/...ializable.html

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Java dispose d'une sérialisation XML dans son API standard qui répond à tes besoins XMLEncoder/XMLDecoder.
    En effet, les attributs ayant leur valeur par défaut ne sont pas sérialisés.

    Un inconvénient toutefois, les classes à sérialiser doivent respecter la convention des JavaBeans (un constructeur par défaut et des accesseurs/modifieurs pour les attributs à sérialiser).
    Remarque : il est possible de passer outre cette inconvénient,cependant cela se révèle plutôt laborieux (cf Using XMLEncoder).
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    le y@m's,

    Oui, j'ai testé XML Encoder/Decoder, mais le problème c'est que cet API ne permet pas de générer le XML Schema correspondant au XML généré... Skaringa si!

    OButterlin,

    Je vais tester...

    Merci pour vos réponses!

    A+

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Il y a une DTD définissant le format utilisé par XMLEncoder/XMLDecoder javabeans.dtd.

    Il n'y a pas de XMLSchema, mais il doit être possible de convertir la DTD en XMLSchema .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

Discussions similaires

  1. [WSDL] Création de client "on the fly"
    Par Carlito95 dans le forum Services Web
    Réponses: 0
    Dernier message: 10/11/2011, 10h13
  2. [MySQL] thumbnail persistant ou on the fly?
    Par darkbob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/06/2007, 16h35

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