°´Ã¼Á÷·ÄÈÀÇ ¶Ç ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â ExternalizableÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ±× ±âº» °³³äÀº Serializable°ú °°½À´Ï´Ù. ±×°Íµµ ±×·² °ÍÀÌ ExternalizableÀÚü°¡ SerializableÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇÑ ÀÎÅÍÆäÀ̽ºÀ̱⠶§¹®ÀÔ´Ï´Ù. ÀÎÅÍÆäÀ̽º°¡ ¾î¶»°Ô »ó¼ÓÀÌ µÇ´À³Ä°í ¸»ÇÏ´Â ºÐµµ °è½Ã°ÚÁö¸¸ ÀÎÅÍÆäÀ̽º´Â ÀÎÅÍÆäÀ̽º ³¢¸®´Â »ó¼ÓÀÇ °³³äÀÌ Àû¿ëµË´Ï´Ù. ±×·¡¼ ±×
ExternalizableÀÇ ¿øÇüÀº ´ÙÀ½°ú °°½À´Ï´Ù.
°´Ã¼ Á÷·Äȸ¦ À§ÇÑ ExternalizableÀÎÅÍÆäÀ̽º |
public interface Externalizable extends Serializable { public void writeExternal(ObjectOutput out) throws IOException; public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException; } |
ExternalizableÀÎÅÍÆäÀ̽º´Â Serializableº¸´Ù ¾à°£ º¹ÀâÇÕ´Ï´Ù. ¹°·Ð, 2°³ÀÇ ¸Þ¼µå¸¦ ±¸ÇöÇØ¾ß¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù. ±×¸®°í Serializableº¸´Ù ¹Ì¼¼ÇÑ Á÷·Äȸ¦ ´Ù·ç±â À§Çؼ »ç¿ëµË´Ï´Ù. Serializable¿¡¼´Â ÀÚµ¿À¸·Î µ¥ÀÌÅͰ¡ ±â·ÏµÇÁö¸¸ Externalizable¿¡¼´Â ±â·ÏÇÏ´Â ºÎºÐÀ» Á÷Á¢ Á¦¾îÇϰڴٴ °ÍÀÔ´Ï´Ù. ÀÌ ¶§ ±â·ÏÇÏ´Â ºÎºÐÀº writeExternalºÎºÐ¿¡ ±¸ÇöÀ» Çϸç Àо´Â ºÎºÐÀº readExternalºÎºÐ¿¡ ¸¸µé¾î ÁÝ´Ï´Ù. writeExternal¸Þ¼µå¿¡¼ »ç¿ëÀÚ°¡ ÀÓÀÇ·Î ±â·ÏÇÏ´Â ¹æ¹ýÀ» ±¸ÇöÇß´Ù¸é Àо´Â ÇØ´äÀ» °®°í ÀÖ´Â °ÍÀº writeExternalÀ» ±¸ÇöÇÑ ¿©·¯ºÐ ÀÚ½ÅÀÔ´Ï´Ù. °ÅÀÇ ¾ÏÈ£ÈÀÇ °³³ä¿¡ °¡±õÁÒ. ¸»·Î¸¸ ÇØ¼ ¹«½¼ ¼Ò¿ëÀÌ ÀÖ°Ú½À´Ï±î! Á÷Á¢ ¿¹Á¦¸¦ ¸¸µé¾î¼ È®ÀÎ ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
ExternalObject.java( Externalizable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ¿¹Á¦) |
import java.io.*; public class ExternalObject implements Externalizable { private int id; // ºÎ¼ private String name; // À̸§ private float height; // Á÷Ã¥ public ExternalObject(){ } public ExternalObject(int id, String name, float height) { this.id = id; this.name = name; this.height = height; } public void readExternal(ObjectInput oi) throws IOException, ClassNotFoundException { System.out.println("readExternal()¸Þ¼µå"); id = oi.readInt(); name = (String)oi.readObject(); height = oi.readFloat(); } public void writeExternal(ObjectOutput oo) throws IOException { System.out.println("writeExternal()¸Þ¼µå"); oo.writeInt(id); oo.writeObject(name); oo.writeFloat(height); } public String toString(){ return id + ":" + name + ":" + height; } } |
C:\JavaExample\12>javac ExternalObject.java |
ExternalizableÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ¼ø¼´Â ´ÙÀ½°ú °°½À´Ï´Ù.
n implements Externalizable ÷ºÎ
n public void writeExternal(ObjectOutput oo)±¸Çö
n public void readExternal(ObjectInput oi)±¸Çö
n ¸Å°³º¯¼ö ¾ø´Â »ý¼ºÀÚ ±¸Çö(¹Ýµå½Ã)
ÀÌ·¯ÇÑ ÀýÂ÷¿¡¼ ±¸ÇöÇÑ À§ÀÇ ¿¹Á¦¸¦ º¸½Ã¸é implements ExternalizableºÎÅÍ ºÙÀÎ ÈÄ¿¡ readExternal°ú writeExternalÀ» ±¸ÇöÇϰí ÀÖ½À´Ï´Ù. ÀÌµé ¸Þ¼µåÀÇ ³»ºÎ¸¦ Çѹø º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¸ÕÀú writeExternal¸Þ¼µåºÎÅÍ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
n oo.writeInt(id);
n oo.writeObject(name);
n oo.writeFloat(height);
ÀÌ ºÎºÐÀº ¸Å°³º¯¼ö·Î ³Ñ¾î¿À´Â ObjectOutputÀÇ °´Ã¼ oo¸¦ ÀÌ¿ëÇÏ¿© ±â·ÏÇÏ°í ½ÍÀº ºÎºÐÀ» Â÷·Ê´ë·Î writeÇØÁÖ°í ÀÖ½À´Ï´Ù. ¹°·Ð ¿©·¯ºÐµéÀÌ ÇÊ¿ä·Î ÇÏ´Â ´ëºÎºÐÀÇ write¸Þ¼µå´Â ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù. ¿©±â¼´Â °£´ÜÈ÷ int, String, float¸¸À» ±â·ÏÇÏ¿´Áö¸¸ ObjectOutputÀÎÅÍÆäÀ̽º°¡ Á¦°øÇØÁÖ´Â writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFloat, writeInt, writeLong, writeShort, writeUTF ¸Þ¼µåµéÀ» ÀüºÎ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×¸®°í, ´Ù½Ã À̰ÍÀ» ÀÐ¾î ¿À´Â ºÎºÐÀº ±â·ÏÇÑ Â÷·Ê´ë·Î Àоî¿À¸é µË´Ï´Ù. readExternal³»ºÎ´Â ´ÙÀ½°ú °°½À´Ï´Ù.
n id = oi.readInt();
n name = (String)oi.readObject();
n height = oi.readFloat();
Á¤È®ÇÏ°Ô ¼ø¼¸¦ ¸ÂÃß¾î È£ÃâÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à ¿©·¯ºÐµéÀÌ À̰ÍÀÇ ¼ø¼¸¦ ¹Ù²Û´Ù¸é ¿¡·¯¸¦ ¸¸³ª°Ô µÉ °ÍÀÔ´Ï´Ù. ±×¸®°í ¸¶Áö¸·À¸·Î Á÷·ÄÈµÈ µ¥ÀÌÅ͸¦ Àоîµé¿©¼ °´Ã¼¸¦ ¸¸µé±â À§ÇØ ÀÎÀÚ¾ø´Â »ý¼ºÀÚ¸Þ¼µå°¡ ÇÊ¿äÇÕ´Ï´Ù. À̰ÍÀ» ¸¸µé¾îÁÖÁö ¾ÊÀ¸¸é ¿¡·¯¸Þ½ÃÁö¿¡¼ ÀÎÀÚ¾ø´Â »ý¼ºÀÚ¸Þ¼µå¸¦ ¿ä±¸ÇÒ °ÍÀÔ´Ï´Ù. ÀÌÁ¦ Á÷·ÄÈ ÇÒ °´Ã¼ µðÀÚÀÎÀÌ ³¡ÀÌ ³µÀ¸´Ï ³ª¸ÓÁö´Â À§ÀÇ ¿¹Á¦µé°ú ¶È°°ÀÌ »ç¿ëÇÏ¸é µË´Ï´Ù. À̰ÍÀ» Å×½ºÆ®ÇÏ´Â ¿¹Á¦´Â ´ÙÀ½°ú °°½À´Ï´Ù.
ExternalObjectTest.java( ExternalizableÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Á÷·ÄÈ °´Ã¼ Å×½ºÆ®) |
import java.io.*; public class ExternalObjectTest { public static void main(String[] args) throws IOException, ClassNotFoundException{ FileOutputStream fos = new FileOutputStream("external.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); ExternalObject so1 = new ExternalObject(1, "È«±æµ¿", 170.25f); ExternalObject so2 = new ExternalObject(2, "±è»ñ°«", 190.01f); ExternalObject so3 = new ExternalObject(3, "¾ÏÇà¾î", 180.34f); oos.writeObject(so1); oos.writeObject(so2); oos.writeObject(so3); oos.close(); FileInputStream fis = new FileInputStream("external.txt"); ObjectInputStream ois = new ObjectInputStream(fis); ExternalObject rso1 = (ExternalObject)ois.readObject(); ExternalObject rso2 = (ExternalObject)ois.readObject(); ExternalObject rso3 = (ExternalObject)ois.readObject(); System.out.println(rso1.toString()); System.out.println(rso2.toString()); System.out.println(rso3.toString()); ois.close(); } } |
C:\JavaExample\12>javac ExternalObjectTest.java C:\JavaExample\12>java ExternalObjectTest writeExternal()¸Þ¼µå writeExternal()¸Þ¼µå writeExternal()¸Þ¼µå readExternal()¸Þ¼µå readExternal()¸Þ¼µå readExternal()¸Þ¼µå 1:È«±æµ¿:170.25 2:±è»ñ°«:190.01 3:¾ÏÇà¾î:180.34 |
Externalizable ÀÎÅÍÆäÀ̽º¸¦ Å×½ºÆ®ÇÏ´Â ¿¹Á¦´Â ÀÏ¹Ý SerializableÀ» Å×½ºÆ®ÇÏ´Â ¿¹Á¦¿Í ´Ù¸¦ °ÍÀÌ ¾ø½À´Ï´Ù. ´Ù¸¸ Á÷·ÄÈ °´Ã¼¸¦ Externalizable·Î ±¸ÇöÇßÀ» »ÓÀÔ´Ï´Ù.
ÀÌ·Î½á ¿©·¯ºÐÀº Á÷·ÄÈÀÇ µÎ °¡Áö »ç¿ë¹ýÀÎ Serializable°ú ExternalizableÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ» ¸ðµÎ ¾Ë¾Æº¸¾Ò½À´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ ÀúÀÚ:ÃÖ¿µ°ü |