$BD>Ns2=$N%+%9%?%^%$%:(B

Revised: Mar./23rd/2002

$BD>Ns2=2DG=$J%*%V%8%'%/%H(B

$B%*%V%8%'%/%H$N%9%H%j!<%`$GpJs$G$9!#%G%U%)%k%H$G=q$-9~$^$l$k$N$OpJs$G$9!'(B

$B%U%#!<%k%I$GB>$N%*%V%8%'%/%H$,;2>H$5$l$F$$$l$P!"$3$l$b=q$-9~$^$l$^$9!#(B

$B$3$N%9%H%j!<%`$GD>Ns2=2DG=$J%*%V%8%'%/%H$O!"%G%U%)%k%H$G$Or7o$N%/%i%9$+$i:n$i$l$?$b$N$K8B$i$l$^$9!'(B

$B%9!<%Q!<%/%i%9$,D>Ns2=2DG=$G$J$$>l9g$O!"I|85$9$k$H$-$K0z?t$N$J$$%3%s%9%H%i%/%?$,8F$P$l$F:F9=C[$5$l$^$9!#$7$?$,$C$F!"$3$N%9!<%Q!<%/%i%9$,0z?t$N$J$$%3%s%9%H%i%/%?$rl9g$O!"%5%V%/%i%9$bD>Ns2=$G$-$^$;$s!#(B

$B0z?t$N$J$$%3%s%9%H%i%/%?$G9=C[$5$l$?%9!<%Q!<%/%i%9$rE,@Z$J>uBV$K99?7$9$k0Y$K$O!"%5%V%/%i%9$G(B writeObject()/readObject() $B$r%*!<%P!<%i%$%I$7$F!"D>Ns2=%W%m%;%9$r%+%9%?%^%$%:$9$kI,MW$,$"$j$^$9!#(B

$B%U%#!<%k%I$GD>Ns2=2DG=$G$J$$%*%V%8%'%/%H$r;2>H$7$F$$$k>l9g$O!"(B transient $B=$>~;R$GD>Ns2=$5$l$J$$$h$&$KL@<($7$F$*$/I,MW$,$"$j$^$9!#$3$N>l9g$OI|85$5$l$k$H$-$K(B 0/null $B$G=i4|2=$5$l$^$9$N$G!"E,@Z$J>uBV$K99?7$9$k0Y$K$O(B writeObject()/readObject() $B$r%*!<%P!<%i%$%I$7$F!"D>Ns2=%W%m%;%9$r%+%9%?%^%$%:$9$kI,MW$,$"$j$^$9!#(B

$BD>Ns2=$N%+%9%?%^%$%:(B

$B@h$K>R2p$7$?D>Ns2=!?D>Ns2=I|85$O!"%G%U%)%k%H$N5sF0$G$9!#$3$3$K%*%V%8%'%/%H$r;}B3$5$;$k0Y$KITI,MW$J>pJs$,4^$^$l$k>l9g$K$O!"D>Ns2=$N5sF0$rL@<($9$k$3$H$G$h$j9bB.$K=hM}$9$k$3$H$b=PMh$^$9!#$^$?!"D>Ns2=IT2DG=$J%*%V%8%'%/%H$N;2>H$r:F9=C[$9$kI,MW$,$"$k>l9g$K$b!"D>Ns2=$N5sF0$r%+%9%?%^%$%:$9$kI,MW$,$"$j$^$9!#(B

$BD>Ns2=%W%m%;%9$r%+%9%?%^%$%:$9$k0Y$K$O!"D>Ns2=$9$k%/%i%9$G

private void writeObject(ObjectOutputStream s) throws IOException
$BJ]B8$9$k%U%#!<%k%I$rL@<($7!"I,MW$,$"$l$PDI2C>pJs$rIU2C$9$k(B
private void readObject(ObjectInputStream s) throws IOException
$BBP1~$9$k(B writeObject() $B%a%=%C%I$G=q$-9~$^$l$?>pJs$rFI$_9~$_!"I,MW$,$"$l$PI|85$5$l$?%*%V%8%'%/%H$N>pJs$r99?7$9$k(B

$B2?$l$N>l9g$b!"@h$K@bL@$7$?%G%U%)%k%H$ND>Ns2=%W%m%;%9$rdefaultWriteObject()$B!"F~NO$O(B defaultReadObject() $B$r8F$S=P$9I,MW$,$"$j$^$9!#(B

// $BD>Ns2=$N%+%9%?%^%$%:(B
private void writeObject(ObjectOutputStream s) throws IOException {
    s.defaultWriteObject();
    // customized serialization code
}

// $BD>Ns2=I|85$N%+%9%?%^%$%:(B
private void readObject(ObjectInputStream s) throws IOException  {
    s.defaultReadObject();
    // customized deserialization code
    ...
    // followed by code to update the object, if necessary
}

readObject() $B%a%=%C%I$OBP1~$9$k(B writeObject() $B%a%=%C%I$HF1$8=gHV$GFI$_9~$`I,MW$,$"$j$^$9!#$^$?!"I,MW$,$"$l$P%*%V%8%'%/%H$N>uBV$r99?7$9$k%3!<%I$rB3$1$k$3$H$b=PMh$^$9!#Nc$($P!"(B transient $B@k8@$7$?%U%#!<%k%I$rFI$_$9>l9g!"D>Ns2=IT2DG=$J%*%V%8%'%/%H$r:F9=C[$9$k>l9g$K;H$$$^$9!#(B

$B%5%s%W%k(B

$BD>Ns2=2DG=$G$J$$%/%i%9(B Oya $B$H!"D>Ns2=2DG=$J%5%V%/%i%9(B Ko $B$rDj5A$7$^$9!#(B

$BD>Ns2=2DG=$G$J$$%9!<%Q!<%/%i%9(B

class Oya {
	private int x, y;

	// $B0z?t$N$J$$%3%s%9%H%i%/%?(B
	public Oya() {
		x = 0;
		y = 0;
	}

	// $B0z?t$N$"$k%3%s%9%H%i%/%?(B
	public Oya(int x, int y) {
		this.x = x;
		this.y = y;
	}

	// x $B$N%;%C%?!<(B
	public void setX(int x) {
		this.x = x;
	}
	// y $B$N%;%C%?!<(B
	public void setY(int y) {
		this.y = y;
	}
	// x $B$N%2%C%?!<(B
	public int getX() {
		return x;
	}
	// y $B$N%2%C%?!<(B
	public int getY() {
		return y;
	}
}

$B$3$3$G$O!"%3%s%9%H%i%/%?$,Fs$DDj5A$5$l$F$$$^$9!#%3%s%9%H%i%/%?$rL@<(E*$KDj5A$7$F$$$J$$>l9g$O!"0z?t$N$J$$%3%s%9%H%i%/%?$,<+F0E*$KC$($^$9!#0z?t$N$J$$%3%s%9%H%i%/%?$,I,MW$J>l9g$O!"L@<(E*$K0z?t$N$J$$%3%s%9%H%i%/%?$r

$BD>Ns2=2DG=$J%5%V%/%i%9(B

$BD>Ns2=2DG=$G$J$$(B Oya $B%/%i%9$r7Q>5$7$F!"D>Ns2=2DG=$J%5%V%/%i%9(B Ko $B$r:n$j$^$9!#(B Oya $B%/%i%9$,D>Ns2=2DG=$G$O$J$$$N$G%+%9%?%^%$%:$7$F?F%/%i%9$ND>Ns2=$NLLE]$b8+$J$1$l$P$J$j$^$;$s!#(B

import java.io.*;

class Ko extends Oya implements Serializable {
	private String name;

	// $B%3%s%9%H%i%/%?(B
	public Ko(int i, int j, String str) {
		this.name = str;
		super.setX(i);
		super.setY(j);
	}

	// name $B$N%2%C%?!<(B
	public String getName() {
		return name;
	}

	// $BD>Ns2=$N%+%9%?%^%$%:(B
	private void writeObject(ObjectOutputStream out)
		throws IOException {

		// $B%G%U%)%k%H$ND>Ns2=%W%m%;%9(B
		out.defaultWriteObject();

		// $BDI2C$ND>Ns2==hM}(B
		out.writeInt(super.getX());
		out.writeInt(super.getY());
	}

	// $BD>Ns2=I|85$N%+%9%?%^%$%:(B
	private void readObject(ObjectInputStream in)
		throws IOException, ClassNotFoundException {

		// $B%G%U%)%k%H$ND>Ns2=I|85$N%W%m%;%9(B
		in.defaultReadObject();

		// $BDI2C$NI|85=hM}(B
		int x = in.readInt();
		int y = in.readInt();
		super.setX(x);
		super.setY(y);
	}
}

$B$=$l$G$O!"(B Ko $B%/%i%9$r%$%s%9%?%s%92=$7$F!"%*%V%8%'%/%H$r%U%!%$%k$KBP$7$FF~=PNO$7$F$_$^$9!#(B

$B%*%V%8%'%/%H$N=PNO%9%H%j!<%`(B

SerializeTest.java:

import java.io.*;

class SerializeTest {
	public static void main(String[] args)
		throws IOException {

		Ko obj = new Ko(10, 20, "$B;R6!(B");
	// $BD>Ns2=$9$k%*%V%8%'%/%H$N%A%'%C%/(B
		System.out.println("----$BD>Ns2=!*(B----");
		System.out.println(obj.getName());
		System.out.println(obj.getX());
		System.out.println(obj.getY());

	// $B%*%V%8%'%/%H$r%U%!%$%k$K=q$-9~$_(B
		FileOutputStream outFile = new FileOutputStream("tmp");
		ObjectOutput out = new ObjectOutputStream(outFile);

		out.writeObject(obj);
		out.flush();

		out.close();
		outFile.close();
	}
}

$B%*%V%8%'%/%H$NF~NO%9%H%j!<%`(B

$B%U%!%$%k$K=q$-9~$_$^$7$?$+$i!"$"$H$GI|85$G$-$^$9!#I|85$9$k=hM}$r:n$j$^$9!#(B

DeserializeTest.java:

import java.io.*;

class DeserializeTest {
	public static void main(String[] args)
		throws IOException, ClassNotFoundException {

	// $B%U%!%$%k$+$i%*%V%8%'%/%H$rFI$_9~$s$GI|85(B
		FileInputStream inFile = new FileInputStream("tmp");
		ObjectInputStream in = new ObjectInputStream(inFile);

		Ko restore = (Ko)in.readObject();

		in.close();
		inFile.close();

	// $BI|85$5$l$?%*%V%8%'%/%H$N%A%'%C%/(B
		System.out.println("-----$BI|85!*(B-----");
		System.out.println(restore.getName());
		System.out.println(restore.getX());
		System.out.println(restore.getY());
	}
}

$B
C:\IO>javac Ko.java

C:\IO>javac SerializeTest.java

C:\IO>javac DeserializeTest.java

C:\IO>java SerializeTest
----$BD>Ns2=!*(B----
$B;R6!(B
10
20

C:\IO>java DeserializeTest
-----$BI|85!*(B-----
$B;R6!(B
10
20

C:\IO>

SerializeTest $B$G%$%s%9%?%s%92=$7$?(B Ko $B7?%*%V%8%'%/%H$,%U%!%$%k$KJ]B8$5$l!"JL$N%"%W%j%1!<%7%g%s$G$"$k(B DeserializeTest $B$GI|85$5$l$F$$$^$9!#%*%V%8%'%/%H$r;}B3E*(B (persistent) $B$K%"%/%;%9$G$-$k$h$&$K$J$C$F$$$^$9!#(B

Externalizable $B%$%s%?%U%'!<%9(B

$B%G%U%)%k%H$ND>Ns2=$h$j$b!"%+%9%?%^%$%:$9$kItJ,$NJ}$,B?$$>l9g$K$O!"(B Externalizable $B%$%s%?%U%'!<%9$rwriteExternal()/readExternal() $B$rMQ$$$?J}$,NI$$$G$7$g$&!#%*%V%8%'%/%H$r:F9=C[$9$k$?$a$N>pJs$,8B$i$l$F$*$j%G%U%)%k%H$N5!9=$G$O>iD9$J>l9g$d!"(B JavaVM $B$N%G%U%)%k%H%U%)!<%^%C%H$G$O$J$/!"D>Ns2=$9$k%/%i%9$G%U%)!<%^%C%H$rL@<($7$?$$>l9g$O!"$3$A$i$G

$B$3$N>l9g$O!"Ev3:%*%V%8%'%/%H$N%/%i%97?$O<+F0E*$KF~=PNO$5$l$^$9$N$G!"I,MW$J%U%#!<%k%I$NCM$@$1



Copyright © 2002 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送