Det betyder blot at det kan skrives til disken eller sendes over et netværk, eller lign.
Når en klasse er serializable, betyder det også at alle det variable skal være serializable. Ved mindre at du skriver: public transient MyObj myObj; istedet public MyObj myObj;
Så vil dette ikke blive serialiseret, og behøver derfor ikke at implementere serializable - interfacet.
Det er sådan set ikke et spørgsmål om BRUGEN af Serializable, men mere et spørgsmål der går på MENINGEN med interfacet.
eftersom man ikke skal implementere nogle metoder i interfacet, så er det bare lidt uforståeligt hvorfor man som programmør absolut skal lave ens klasser være serializable. Hvad siger man dermed? og hvilke klasser vil man f.eks. ikke kunne lave serializable?
Checksum: Over Netværk. Når to programmer udveksler objekter. Den ene måde at gøre det på kræver at Klassen findes i begge ender af forbindelsen. Hvis de to klasser ikke er ens for man en EXception baseret på forskellige serienumre.
Serializable er et såkaldt marker interface, det bruges for at kunne lave instanceof Serializable på et objekt og få enten true eller false. Dette bruges af f.eks. en ObjectOutputStream til at tillade at et givent objekt bliver serialiseret. ObjectOutputStream har en metode writeObject, som vil serialisere en object-graf ud i en anden OutputStream, og den bruger Serializable til kontrol af, at klassen skal komme med. Hvis ikke kaster den en ekseption, her er et udpluk af dens handlemønster: Object altobj = objectToSerialize(); if (altobj != null && ! (altobj instanceof Serializable)) { String clname = altobj.getClass().getName(); throw new NotSerializableException(clname); }
I den betydning, vil du kunne markere hvilke klasser, som kan serialiseres, og hvilke som ikke kan. Deruodver er der jo transient, som du har set lidt ovenfår.
Når du implementerer interfacet Serializable, betyder det, at du (som programmør) har sikret dig at klassen\'s tilstand kan laves om til en bytestrøm. Der er altså et \"flag\" til JVM\'en
tigtak>> Det er ikke noget flag, der er ikke noget specielt med klasser, som implementerer serializable. Det er en ganske almindelig kode konstruktion, og fungerer på nøjagtig samme måde. Kig på interfacet java.util.EventListener, det er samme opbygning.
Alle klasser kan serialiseres, hvis man skriver det selv, men fidusen med java.io.Serializable og java.io.ObjectOutputStream er netop, at det er ordnet på forhånd.
logical>> Er med på hvad du siger, og er klar over at man kan bruge read /writeObject, men jeg vidregiver blot hvad min lærer fortalte mig om Serilizable (kontekst: RMI i EJB)...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.