ʵÏÖ java.io.Serializable ½Ó¿ÚµÄÀàÊÇ¿ÉÐòÁл¯µÄ¡£Ã»ÓÐʵÏִ˽ӿڵÄÀཫ²»ÄÜʹËüÃǵÄÈÎһ״̬±»ÐòÁл¯»òÄæÐòÁл¯¡£ÐòÁл¯ÀàµÄËùÓÐ×ÓÀà±¾Éí¶¼ÊÇ¿ÉÐòÁл¯µÄ¡£Õâ¸öÐòÁл¯½Ó¿ÚûÓÐÈκη½·¨ºÍÓò£¬½öÓÃÓÚ±êʶÐòÁл¯µÄÓïÒâ¡£
ͨË×µã˵£¬ËùνµÄSerializable,¾ÍÊÇjavaÌṩµÄͨÓÃÊý¾Ý±£´æºÍ¶ÁÈ¡µÄ½Ó¿Ú¡£ÖÁÓÚ´ÓʲôµØ·½¶Á³öÀ´ºÍ±£´æµ½ÄÄÀïÈ¥¶¼±»Òþ²ØÔÚº¯Êý²ÎÊýµÄ±³ºóÁË¡£ÕâÑù×Ó£¬ÈκÎÀàÐÍֻҪʵÏÖÁËSerializable½Ó¿Ú£¬¾Í¿ÉÒÔ±»±£´æµ½ÎļþÖУ¬»òÕß×÷ΪÊý¾ÝÁ÷ͨ¹ýÍøÂç·¢Ë͵½±ðµÄµØ·½¡£Ò²¿ÉÒÔÓùܵÀÀ´´«Ê䵽ϵͳµÄÆäËû³ÌÐòÖС£ÕâÑù×Ó¼«´óµÄ¼ò»¯ÁËÀàµÄÉè¼Æ¡£Ö»ÒªÉè¼ÆÒ»¸ö±£´æÒ»¸ö¶ÁÈ¡¹¦ÄܾÍÄܽâ¾öÉÏÃæ˵µÃËùÓÐÎÊÌâ¡£
ÔÊÐí·ÇÐòÁл¯ÀàµÄ×ÓÀàÐÍÐòÁл¯£¬×ÓÀàÐÍ¿ÉÒÔ¼Ù¶¨¸ºÔð±£´æºÍ»Ö¸´¸¸ÀàÐ͵Ĺ«Óеġ¢±£»¤µÄºÍ(Èç¹û¿É·ÃÎÊ)°üµÄÓòµÄ״̬¡£Ö»Òª¸ÃÀà(À©Õ¹)ÓÐÒ»¸öÎ޲ι¹Ôì×Ó£¬¿É³õʼ»¯ËüµÄ״̬£¬ÄÇô×ÓÀàÐ;Ϳɳе£ÉÏÊöÖ°Ôð¡£ÔÚÕâÖÖÇé¿öÏÂÉêÃ÷Ò»¸ö¿ÉÐòÁл¯µÄÀàÊÇÒ»¸ö´íÎó¡£´Ë´íÎó½«ÔÚÔËÐÐʱ±»¼ì²â¡£
ÔÚÄæÐòÁл¯Æڼ䣬½«Ê¹Ó÷ÇÐòÁл¯ÀàµÄ¹«ÓõĻò±£»¤µÄÎ޲ι¹Ôì×Ó¶ÔËüµÄÓò½øÐгõʼ»¯¡£¿ÉÐòÁл¯×ÓÀà±ØÐëÄÜ·ÃÎʸ¸ÀàµÄÎ޲ι¹Ôì×Ó¡£ËüµÄËùÓÐÓò½«´ÓÏàÓ¦Á÷Öб»»Ö¸´¡£
µ±±éÀúÒ»¸öͼÏóʱ£¬ºÜ¿ÉÄÜÓöµ½Ò»¸ö²»Ö§³ÖÐòÁл¯½Ó¿ÚµÄ¶ÔÏó¡£´Ëʱ½«Å׳ö NotSerializableException Òì³££¬ÇÒ±êʶ¸Ã·ÇÐòÁл¯¶ÔÏóÀà¡£
ÔÚÐòÁл¯´¦Àí¹ý³ÌÖÐÐèÒªÌض¨¾ä±úµÄÀ࣬±ØÐëʹÓÃÈçÏÂÕâЩǡµ±µÄ±ê¼ÇʵÏÖÌض¨µÄ·½·¨£º
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
writeObject ·½·¨¸ºÔðдÌض¨ÀàµÄ¶ÔÏóµÄ״̬£¬ÒÔÖÁÏàÓ¦µÄ readObject ·½·¨Äָܻ´Ëü¡£ ͨ¹ýµ÷Óà out.defaultWriteObject ¿É¼¤»î±£´æ¶ÔÏóÓòµÄȱʡ»úÖÆ¡£´Ë·½·¨²»±Ø¹ØÐÄ״̬ÊÇÊôÓÚËüµÄ¸¸À໹ÊÇ×ÓÀà¡£ ʹÓà writeObject ·½·¨»ò»ù±¾ÀàÐÍÖ§³ÖµÄ DataOutput ·½·¨½«Ã¿¸öÓòµÄ״̬±£´æµ½ ObjectOutputStream ÖС£
readObject ·½·¨¸ºÔð´Ó´ËÁ÷ÖжÁÈ¡²¢»Ö¸´ÀàµÄÓò¡£Ëü¿ÉÄܵ÷Óà in.defaultReadObject ·½·¨À´µ÷ÓøöÔÏóµÄ·Ç¾²Ì¬ºÍ·ÇÔÝʱµÄÓòµÄȱʡ»Ö¸´»úÖÆ¡£ defaultReadObject ·½·¨Ê¹ÓøÃÁ÷ÖеÄÐÅÏ¢£¬Óõ±Ç°¶ÔÏóÖеÄÒÑÃüÃûÓò·ÖÅä±£´æÔÚÁ÷ÖиöÔÏóµÄÏàÓ¦Óò¡£µ±ÀàÒѸĽøÔö¼ÓÁËÐÂÓòʱ£¬Õâ¸ö½Ó¿ÚÒ²×öÏàÓ¦´¦Àí¡£´Ë·½·¨²»±Ø¹ØÐÄ״̬ÊÇÊôÓÚËüµÄ¸¸À໹ÊÇ×ÓÀà¡£ ʹÓà writeObject ·½·¨»ò»ù±¾ÀàÐÍÖ§³ÖµÄ DataOutput ·½·¨½«Ã¿¸öÓòµÄ״̬±£´æµ½ ObjectOutputStream ÖС£