Bonjour,
Je découvre la sérialisation en Java.
En PHP il m'était très simple de sérialiser un objet et désérialiser sous forme de chaine de caractères, je remarque qu'en Java ce n'est pas aussi simple.
J'ai donc effectué des recherches et le meilleur exemple que j'ai trouvé est :
Source ici.
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.util.*; import java.io.*; /** * Usage sample serializing SomeClass instance */ public class ToStringSample { public static void main( String [] args ) throws IOException, ClassNotFoundException { String string = toString( new SomeClass() ); System.out.println(" Encoded serialized version " ); System.out.println( string ); SomeClass some = ( SomeClass ) fromString( string ); System.out.println( "\n\nReconstituted object"); System.out.println( some ); } /** Read the object from Base64 string. */ private static Object fromString( String s ) throws IOException , ClassNotFoundException { byte [] data = Base64Coder.decode( s ); ObjectInputStream ois = new ObjectInputStream( new ByteArrayInputStream( data ) ); Object o = ois.readObject(); ois.close(); return o; } /** Write the object to a Base64 string. */ private static String toString( Serializable o ) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream( baos ); oos.writeObject( o ); oos.close(); return new String( Base64Coder.encode( baos.toByteArray() ) ); } } /** Test subject. A very simple class. */ class SomeClass implements Serializable{ int i = Integer.MAX_VALUE; String s = "ABCDEFGHIJKLMNOP"; Double d = new Double( -1.0 ); public String toString(){ return "SomeClass instance says: Don't worry, " + "I'm healty. Look, my data is i = " + i + ", s = " + s + ", d = " + d; } }
L'auteur précise bien que Java n'implémente pas ce genre de fonctionnalité à la base :
Sun (ou Oracle) n'a t-il vraiment pas prévu ce genre de cas pour envoyer un objet sous forme de chaine de caractère vers une base de données ou vers une ligne de commande ?Java does not have a "public" implementation for that (though sun.misc, and java.util.prefs have implementations and the source is available, but check the license for those).
En tant normal, comment fait-t-on pour envoyer un objet sur le réseaux (socket), se sert-t-on uniquement d'un objet ObjectInputStream ?
Merci
Partager