|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
public interface Serializable
Ŭ·¡½ºÀÇ Á÷·ÄÈ °¡´É¼ºÀº java.io.Serializable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Å¬·¡½º¿¡ ÀÇÇØ À¯È¿ÇÏ°Ô µË´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰí ÀÖÁö ¾Ê´Â Ŭ·¡½º¿¡¼´Â ±× »óŰ¡ Á÷·ÄÈ ¶Ç´Â Á÷·ÄÈ º¹¿øµÉ °ÍÀº ¾ø½À´Ï´Ù. Á÷·ÄÈ °¡´É Ŭ·¡½ºÀÇ ¾Æ·ùÇüÀº ¸ðµÎ ±× ÀÚü°¡ Á÷·ÄÈ °¡´ÉÇÕ´Ï´Ù. Á÷·ÄÈ ÀÎÅÍÆäÀ̽º¿¡´Â ¸Þ¼µå³ª Çʵå´Â ¾ø°í, Á÷·ÄÈ °¡´ÉÇÑ °ÍÀ» ½Äº°Çϱâ À§ÇØÀÎ ¸¸Å ±â´ÉÇÕ´Ï´Ù.
ºñÁ÷·ÄÈ °¡´É Ŭ·¡½ºÀÇ ¾Æ·ùÇüÀ» Á÷·ÄÈ °¡´ÉÇÏ°Ô Çϱâ À§ÇÑ, ¾Æ·ùÇü¿¡¼´Â ½´ÆÛŸÀÔÀÇ public Çʵå, protected ÇÊµå ¹× (¾×¼¼½º °¡´ÉÇϸé) package ÇÊµå »óŸ¦ º¸Á¸Çϰųª º¹¿øÇϰųª ÇÒ Ã¥ÀÓÀ» »óÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¸, ¾Æ·ùÇüÀ¸·Î ÀÌ Ã¥ÀÓÀ» »óÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀº ±×°ÍÀÌ È®ÀåÇϴ Ŭ·¡½º¿¡ Ŭ·¡½º »óŸ¦ ÃʱâÈÇϱâ À§ÇÑ ¾×¼¼½º °¡´ÉÇÑ Àμö ¾øÀ½ÀÇ »ý¼ºÀÚ°¡ ÀÖ´Â °æ¿ì¸¸ÀÔ´Ï´Ù. »ý¼ºÀÚ°¡ ¾ø´Â °æ¿ì´Â Serializable Ŭ·¡½º¸¦ ¼±¾ðÇÏ¸é ¿¡·¯°¡ µË´Ï´Ù. ¿¡·¯´Â ½ÇÇà½Ã¿¡ °ËÃâµË´Ï´Ù.
Á÷·ÄÈ º¹¿ø¶§´Â ºñÁ÷·ÄÈ °¡´É Ŭ·¡½ºÀÇ Çʵå´Â ±× Ŭ·¡½ºÀÇ public ¶Ç´Â protected Àμö ¾øÀ½ÀÇ »ý¼ºÀÚ¸¦ »ç¿ëÇØ Ãʱâȵ˴ϴÙ. Àμö ¾øÀ½ÀÇ »ý¼ºÀÚ´Â Á÷·ÄÈ °¡´É ¼ºê Ŭ·¡½º·ÎºÎÅÍ ¾×¼¼½º °¡´ÉÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Á÷·ÄÈ °¡´É ¼ºê Ŭ·¡½ºÀÇ Çʵå´Â ½ºÆ®¸²·ÎºÎÅÍ º¹¿øµË´Ï´Ù.
°´Ã¼ ±×·¡ÇÁÀÇ ¼øÈ¸Áß¿¡ Á÷·ÄÈ °¡´É ÀÎÅÍÆäÀ̽º¸¦ Áö¿ø Çϰí ÀÖÁö ¾ÊÀ» °¡´É¼ºÀÌ ÀÖ´Â °´Ã¼¿¡ Á¶¿ìÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì´Â NotSerializableException°¡ Throw µÇ¾î ºñÁ÷·ÄÈ °¡´É °´Ã¼ÀÇ Å¬·¡½º¸¦ ½Äº°ÇÕ´Ï´Ù.
Á÷·ÄÈ¿Í Á÷·ÄÈ º¹¿ø ½Ã¿¡ Ư¼öÇÑ Ãë±ÞÀÌ ÇÊ¿äÇÑ Å¬·¡½º¿¡¼´Â Á¤È®ÇÏ°Ô ´ÙÀ½°ú °°Àº ½Ã±×´ÏÃĸ¦ °¡Áö´Â Ư¼öÇÑ ¸Þ¼µå¸¦ ±¸ÇöÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
private void writeObject(java.io.ObjectOutputStream out) throws IOException private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;
writeObject ¸Þ¼µå¿¡¼´Â ±× °³°³ÀÇ Å¬·¡½ºÀÇ °´Ã¼ »óŸ¦ Ãâ·ÂÇÒ Ã¥ÀÓÀÌ ÀÖ¾î, ´ëÀÀÇÏ´Â readObject ¸Þ¼µå·Î º¹¿øÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. out.defaultWriteObject¸¦ È£ÃâÇϸé, °´Ã¼ÀÇ Çʵ带 º¸Á¸Çϱâ À§ÇÑ µðÆúÆ®ÀÇ µµ±¸¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù . ±× ¸Þ¼µå ÀÚ½ÅÀº ±× ½´ÆÛ Ŭ·¡½º ¶Ç´Â ¼ºê Ŭ·¡½º¿¡ ¼ÓÇÏ´Â »óÅ¿¡ °ü¿©ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. »óŸ¦ º¸Á¸ÇÏ·Á¸é, writeObject ¸Þ¼µå¸¦ »ç¿ëÇØ °³°³ÀÇ Çʵ带 ObjectOutputStream¿¡ Ãâ·ÂÇÏ´ÂÁö, ¶Ç´Â DataOutput ·Î Áö¿øÇÏ´Â ´Ü¼øÇÑ µ¥ÀÌÅÍ Å¸ÀÔ¿ëÀÇ ¸Þ¼µå¸¦ »ç¿ëÇÕ´Ï´Ù.
readObject ¸Þ¼µå´Â ½ºÆ®¸²·ÎºÎÅÍ Àбâ Ŭ·¡½ºÀÇ Çʵ带 º¹¿øÇÒ Ã¥ÀÓÀÌ ÀÖ½À´Ï´Ù. in.defaultReadObject ¸Þ¼µå¸¦ È£ÃâÇØ, ±× °´Ã¼ÀÇ ºñ static ÇÊµå ¹× ºñ transient Çʵ带 º¹¿øÇϱâ À§ÇÑ µðÆúÆ®ÀÇ µµ±¸¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù . defaultReadObject ¸Þ¼µå´Â ½ºÆ®¸²ÀÇ Á¤º¸¸¦ »ç¿ëÇØ, ÇöÀçÀÇ °´Ã¼³»ÀÇ ´ëÀÀÇÏ´Â À̸§À» ºÙÀÏ ¼ö ÀÖ¾ú´ø Çʵ忡¼ ½ºÆ®¸²¿¡ º¸Á¸µÈ °´Ã¼ÀÇ Çʵ带 ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¸Þ¼µå´Â »õ·Î¿î Çʵ带 Ãß°¡Çϱâ À§Çؼ Ŭ·¡½º°¡ Àü°³µÇ´Â °æ¿ì¸¦ Ãë±ÞÇÕ´Ï´Ù. ÀÌ ¸Þ¼µå ÀÚ½ÅÀº ±× ½´ÆÛ Ŭ·¡½º ¶Ç´Â ¼ºê Ŭ·¡½º¿¡ ¼ÓÇÏ´Â »óÅ¿¡ ±×°Í ÀÚ½ÅÀÌ °ü¿©ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. »óÅ´ writeObject ¸Þ¼µå¸¦ »ç¿ëÇØ °³°³ÀÇ Çʵ带 ObjectOutputStream¿¡ Ãâ·ÂÇÏ´ÂÁö, ¶Ç´Â DataOutput ·Î Áö¿øÇÏ´Â ±âº» µ¥ÀÌÅÍÇü¿ëÀÇ ¸Þ¼µå¸¦ »ç¿ëÇÏ´Â °ÍÀ¸·Î ÀúÀåÇÕ´Ï´Ù.
½ºÆ®¸²¿¡ °´Ã¼¸¦ Ãâ·ÂÇÒ ¶§ »ç¿ëÇÏ´Â ´ëü °´Ã¼¸¦ ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ´Â Á÷·ÄÈ °¡´É Ŭ·¡½º¿¡¼´Â ´ÙÀ½ÀÇ ½Ã±×´ÏÃĸ¦ Á¤È®ÇÏ°Ô ÁöÁ¤ÇØ, ÀÌ Æ¯º°ÇÑ ¸Þ¼µå¸¦ ±¸ÇöÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException;
ÀÌ writeReplace ¸Þ¼µå°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â Á÷·ÄÈ·Î ÀÌ ¸Þ¼µå°¡ È£ÃâµË´Ï´Ù. ¶Ç, ÀÌ ¸Þ¼µå´Â Á÷·ÄÈ µÇ´Â °´Ã¼ÀÇ Å¬·¡½º³»¿¡¼ Á¤Àǵǰí ÀÖ´Â ¸Þ¼µå·ÎºÎÅÍ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¶§¹®¿¡ ÀÌ ¸Þ¼µå¿¡¼´Â private, protected ¹× package-private ·Î ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù . ÀÌ ¸Þ¼µå¿¡ ´ëÇÑ ¼ºê Ŭ·¡½ºÀÇ ¾×¼¼½º¿¡ ´ëÇØ¼´Â java ¾×¼¼½º °¡´É¼º ±ÔÄ¢¿¡ ÁذÅÇÕ´Ï´Ù.
´ëü °´Ã¼ÀÇ ÀνºÅϽº¸¦ ½ºÆ®¸²·ÎºÎÅÍ ÀоîµéÀÏ ¶§ ±× °´Ã¼¸¦ ÁöÁ¤ÇÒ Çʿ䰡 Àִ Ŭ·¡½º¿¡¼´Â ´ÙÀ½ÀÇ ½Ã±×´ÏÃĸ¦ Á¤È®ÇÏ°Ô ÁöÁ¤ÇØ, ÀÌ Æ¯º°ÇÑ ¸Þ¼µå¸¦ ±¸ÇöÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;
ÀÌ readResolve ¸Þ¼µå´Â writeReplace¿Í °°Àº È£ÃâÇØ ±ÔÄ¢°ú ¾×¼¼½º °¡´É¼º ±ÔÄ¢¿¡ ÁذÅÇÕ´Ï´Ù.
Á÷·ÄÈ ·±Å¸ÀÓÀº Á÷·ÄÈ °¡´É Ŭ·¡½º¿Í ¹öÀü
¹øÈ£ (serialVersionUID)¸¦ °ü·ÃÁþ½À´Ï´Ù. ¹öÀü
¹øÈ£´Â Á÷·ÄÈ º¹¿ø½Ã¿¡
Á÷·ÄÈ °´Ã¼ÀÇ ¼Û½ÅÃø°ú ¼ö½ÅÃøÀÌ Á÷·ÄÈ È£È¯¼ºÀÌ ÀÖ´Â ÀÌ °´Ã¼ÀÇ Å¬·¡½º¸¦ ·ÎµåÇß´ÂÁö ¾î¶°Çß´ÂÁö¸¦ °ËÁõÇϱâ À§Çؼ »ç¿ëµË´Ï´Ù. ¼ö½ÅÃøÀÌ ¼Û½ÅÃøÀÇ Å¬·¡½º¿Í serialVersionUID°¡ ´Ù¸¥ °´Ã¼ÀÇ Å¬·¡½º¸¦ ·ÎµåÇßÀ» °æ¿ì, Á÷·ÄÈ º¹¿øÀÇ °á°ú´Â InvalidClassException
ÀÌ µË´Ï´Ù. Á÷·ÄÈ °¡´É Ŭ·¡½º´Â µ¶ÀÚÀûÀÎ serialVersionUID¸¦ ¸í½ÃÀûÀ¸·Î ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¶§¹®¿¡´Â static ¶ÇÇÑ final
long
Çü ÇÊµå ¡¸serialVersionUID
¡¹¸¦ ¼±¾ðÇÕ´Ï´Ù.
ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;Á÷·ÄÈ °¡´É Ŭ·¡½º°¡ ¸í½ÃÀûÀ¸·Î serialVersionUID¸¦ ¼±¾ðÇÏÁö ¾Ê´Â °æ¿ì, Á÷·ÄÈ ·±Å¸ÀÓÀº ¡¸Java(TM) Object Serialization Specification¡¹¿¡ ±â¼úµÇ°í ÀÖµµ·Ï, ´Ù¾çÇÑ ±¹¸é¿¡ ±â¹ÝÇØ ±× Ŭ·¡½ºÀÇ µðÆúÆ®ÀÇ serialVersionUID Ä¡¸¦ °è»êÇÕ´Ï´Ù. ±×·¯³ª, µðÆúÆ®ÀÇ serialVersionUID °è»êÀº Ŭ·¡½ºÀÇ »ó¼¼ Á¤º¸¿¡ Å©°Ô Á¿ìµÇ¾î ÀÌ Å¬·¡½ºÀÇ »ó¼¼ Á¤º¸´Â °Ô´Ù°¡ ÄÄÆÄÀÏ·¯ÀÇ ±¸Çö »óȲ¿¡ Á¸Çϰí ÀÖÀ¸¹Ç·Î Á÷·ÄÈ º¹¿ø½Ã¿¡ ¿¹±âÄ¡ ¾ÊÀº
InvalidClassException
°¡ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ¸·±â À§Çؼµµ, ¸ðµç Á÷·ÄÈ °¡´É Ŭ·¡½º°¡ serialVersionUID Ä¡¸¦ ¸í½ÃÀûÀ¸·Î ¼±¾ðÇϵµ·Ï ¼³Á¤ÇÏ´Â °ÍÀ» °ÇÏ°Ô ÃßõÇÕ´Ï´Ù. Java ÄÄÆÄÀÏ·¯ ±¸ÇöÀÌ Â÷À̰¡ ³ªµµ, Ç×»ó ÀÏÁ¤ÇÑ serialVersionUID Ä¡¸¦ ¾òÀ¸·Á¸é,
Á÷·ÄÈ °¡´É Ŭ·¡½º°¡ ¸í½ÃÀûÀÎ serialVersionUID Ä¡¸¦ ¼±¾ðÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç, ÀÌ ¼±¾ð¿¡¼´Â ÇÒ ¼ö ÀÖ´Â ÇÑ private
¼ö½ÄÀÚ¸¦ »ç¿ëÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù. ¿Ö³ÄÇϸé, ÀÌ ¼±¾ðÀº ¹Ù·Î ¿·ÀÇ ¼±¾ð Ŭ·¡½º ¹Û¿¡ Àû¿ëµÇÁö ¾Ê°í, serialVersionUID Çʵå´Â »ó¼Ó ¸â¹ö·Î¼ »ç¿ëÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
ObjectOutputStream
,
ObjectInputStream
,
ObjectOutput
,
ObjectInput
,
Externalizable
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.