ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
µÚÈýµç×ÓÊé ·µ»Ø±¾ÊéĿ¼ ¼ÓÈëÊéÇ© ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ¡ºÊղص½ÎÒµÄä¯ÀÀÆ÷¡»

Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ79²¿·Ö

¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡


ÒªÇóAlien¡¡µÄClass¡¡¶ÔÏ󡪡ªJava¡¡ÐéÄâ»ú£¨JVM£©±ãÕÒ²»µ½Alien¡£class¡¡£¨³ý·ÇËüÕýºÃÔÚÀà·¾¶ÄÚ£¬¶ø±¾ÀýÀí¡¡

Ó¦Ïà·´£©¡£ÕâÑù¾Í»áµÃµ½Ò»¸öÃû½Ð¡¡ClassNotFoundException¡¡µÄÎ¥Àý£¨Í¬ÑùµØ£¬Èô·ÇÄܹ»Ð£ÑéAlien¡¡´æÔÚµÄÖ¤¡¡

¾Ý£¬·ñÔòËüµÈÓÚÏûʧ£©¡£¡¡¡¡

»Ö¸´ÁËÒ»¸öÐòÁл¯µÄ¶ÔÏóºó£¬Èç¹ûÏë¶ÔÆä×ö¸ü¶àµÄÊÂÇ飬±ØÐë±£Ö¤JVM¡¡ÄÜÔÚ±¾µØÀà·¾¶»òÕßÒòÌØÍøµÄÆäËûʲ¡¡

ôµØ·½ÕÒµ½Ïà¹ØµÄ¡£classÎļþ¡£¡¡¡¡



10¡£9¡£2¡¡¡¡ÐòÁл¯µÄ¿ØÖÆ¡¡¡¡



ÕýÈç´ó¼Ò¿´µ½µÄÄÇÑù£¬Ä¬ÈϵÄÐòÁл¯»úÖƲ¢²»ÄѲÙ×Ý¡£È»¶ø£¬¼ÙÈôÓÐÌØÊâÒªÇóÓÖ¸ÃÔõô°ìÄØ£¿ÎÒÃÇ¿ÉÄÜÓÐÌØ¡¡

ÊâµÄ°²È«ÎÊÌ⣬²»Ï£Íû¶ÔÏóµÄijһ²¿·ÖÐòÁл¯£»»òÕßijһ¸ö×Ó¶ÔÏóÍêÈ«²»±ØÐòÁл¯£¬ÒòΪ¶ÔÏó»Ö¸´ÒÔºó£¬ÄÇ¡¡

Ò»²¿·ÖÐèÒªÖØд´½¨¡£¡¡¡¡

´Ëʱ£¬Í¨¹ýʵÏÖExternalizable¡¡½Ó¿Ú£¬ÓÃËü´úÌæSerializable¡¡½Ó¿Ú£¬±ã¿É¿ØÖÆÐòÁл¯µÄ¾ßÌå¹ý³Ì¡£Õâ¸ö¡¡

Externalizable¡¡½Ó¿ÚÀ©Õ¹ÁË¡¡Serializable£¬²¢ÔöÌíÁËÁ½¸ö·½·¨£ºwriteExternal£¨£©ºÍreadExternal£¨£©¡£ÔÚÐò¡¡

Áл¯ºÍÖØÐÂ×°ÅäµÄ¹ý³ÌÖУ¬»á×Ô¶¯µ÷ÓÃÕâÁ½¸ö·½·¨£¬ÒÔ±ãÎÒÃÇÖ´ÐÐһЩÌØÊâ²Ù×÷¡£¡¡¡¡

ÏÂÃæÕâ¸öÀý×ÓչʾÁËExternalizable¡¡½Ó¿Ú·½·¨µÄ¼òµ¥Ó¦Óá£×¢ÒâBlip1¡¡ºÍBlip2¡¡¼¸ºõÍêÈ«Ò»Ö£¬³ýÁ˼«Î¢Ð¡¡¡

µÄ²î±ð£¨×Ô¼ºÑо¿Ò»Ï´úÂ룬¿´¿´ÊÇ·ñÄÜ·¢ÏÖ£©£º¡¡¡¡

¡¡¡¡

//£º¡¡Blips¡£java¡¡¡¡

//¡¡Simple¡¡use¡¡of¡¡Externalizable¡¡&¡¡a¡¡pitfall¡¡¡¡

import¡¡java¡£io¡£*£»¡¡¡¡

import¡¡java¡£util¡£*£»¡¡¡¡

¡¡¡¡

class¡¡Blip1¡¡implements¡¡Externalizable¡¡£û¡¡¡¡

¡¡¡¡public¡¡Blip1£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip1¡¡Constructor¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡writeExternal£¨ObjectOutput¡¡out£©¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡319¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡321¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡throws¡¡IOException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip1¡£writeExternal¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡readExternal£¨ObjectInput¡¡in£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡throws¡¡IOException£»¡¡ClassNotFoundException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip1¡£readExternal¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡Blip2¡¡implements¡¡Externalizable¡¡£û¡¡¡¡

¡¡¡¡Blip2£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip2¡¡Constructor¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡writeExternal£¨ObjectOutput¡¡out£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡throws¡¡IOException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip2¡£writeExternal¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡readExternal£¨ObjectInput¡¡in£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡throws¡¡IOException£»¡¡ClassNotFoundException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip2¡£readExternal¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡Blips¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Constructing¡¡objects£º¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Blip1¡¡b1¡¡=¡¡new¡¡Blip1£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Blip2¡¡b2¡¡=¡¡new¡¡Blip2£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ObjectOutputStream¡¡o¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡ObjectOutputStream£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡FileOutputStream£¨¡¨Blips¡£out¡¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Saving¡¡objects£º¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡o¡£writeObject£¨b1£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡o¡£writeObject£¨b2£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡o¡£close£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Now¡¡get¡¡them¡¡back£º¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ObjectInputStream¡¡in¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡ObjectInputStream£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡FileInputStream£¨¡¨Blips¡£out¡¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Recovering¡¡b1£º¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡b1¡¡=¡¡£¨Blip1£©in¡£readObject£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡//¡¡OOPS£¡¡¡Throws¡¡an¡¡exception£º¡¡¡¡

//£¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Recovering¡¡b2£º¡¨£©£»¡¡¡¡

//£¡¡¡¡¡¡¡b2¡¡=¡¡£¨Blip2£©in¡£readObject£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡catch£¨Exception¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡e¡£printStackTrace£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡320¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡322¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¸Ã³ÌÐòÊä³öÈçÏ£º¡¡¡¡

Constructing¡¡objects£º¡¡¡¡

Blip1¡¡Constructor¡¡¡¡

Blip2¡¡Constructor¡¡¡¡

Saving¡¡objects£º¡¡¡¡

Blip1¡£writeExternal¡¡¡¡

Blip2¡£writeExternal¡¡¡¡

Recovering¡¡b1£º¡¡¡¡

Blip1¡¡Constructor¡¡¡¡

Blip1¡£readExternal¡¡¡¡

¡¡¡¡

δ»Ö¸´Blip2¡¡¶ÔÏóµÄÔ­ÒòÊÇÄÇÑù×ö»áµ¼ÖÂÒ»¸öÎ¥Àý¡£ÄãÕÒ³öÁË¡¡Blip1¡¡ºÍ¡¡Blip2¡¡Ö®¼äµÄÇø±ðÂð£¿Blip1¡¡µÄ¹¹½¨¡¡

Æ÷ÊÇ¡°¹«¹²µÄ¡±£¨public£©£¬Blip2¡¡µÄ¹¹½¨Æ÷Ôò²»È»£¬ÕâÑù±ã»áÔÚ»Ö¸´Ê±Ôì³ÉÎ¥Àý¡£ÊÔÊÔ½«¡¡Blip2¡¡µÄ¹¹½¨Æ÷¡¡

ÊôÐÔ±ä³É¡°public¡±£¬È»ºóɾ³ý//£¡×¢Êͱê¼Ç£¬¿´¿´ÊÇ·ñÄܵõ½ÕýÈ·µÄ½á¹û¡£¡¡¡¡

»Ö¸´b1¡¡ºó£¬»áµ÷Óá¡Blip1¡¡Ä¬ÈϹ¹½¨Æ÷¡£ÕâÓë»Ö¸´Ò»¸öSerializable¡¡£¨¿ÉÐòÁл¯£©¶ÔÏó²»Í¬¡£ÔÚºóÕßµÄÇé¿ö¡¡

Ï£¬¶ÔÏóÍêÈ«ÒÔËü±£´æÏÂÀ´µÄ¶þ½øÖÆλΪ»ù´¡»Ö¸´£¬²»´æÔÚ¹¹½¨Æ÷µ÷Ó᣶ø¶ÔÒ»¸öExternalizable¡¡¶ÔÏó£¬Ëù¡¡

ÓÐÆÕͨµÄĬÈϹ¹½¨ÐÐΪ¶¼»á·¢Éú£¨°üÀ¨ÔÚ×ֶζ¨ÒåʱµÄ³õʼ»¯£©£¬¶øÇÒ»áµ÷ÓÃreadExternal£¨£©¡£±ØÐë×¢ÒâÕâ¡¡

Ò»ÊÂʵ¡ª¡ªÌرð×¢ÒâËùÓÐĬÈϵĹ¹½¨ÐÐΪ¶¼»á½øÐСª¡ª·ñÔòºÜÄÑÔÚ×Ô¼ºµÄ¡¡Externalizable¡¡¶ÔÏóÖвúÉúÕýÈ·µÄ¡¡

ÐÐΪ¡£¡¡¡¡

ÏÂÃæÕâ¸öÀý×Ó½ÒʾÁ˱£´æºÍ»Ö¸´Ò»¸öExternalizable¡¡¶ÔÏó±ØÐë×öµÄÈ«²¿ÊÂÇ飺¡¡¡¡

¡¡¡¡

//£º¡¡Blip3¡£java¡¡¡¡

//¡¡Reconstructing¡¡an¡¡externalizable¡¡object¡¡¡¡

import¡¡java¡£io¡£*£»¡¡¡¡

import¡¡java¡£util¡£*£»¡¡¡¡

¡¡¡¡

class¡¡Blip3¡¡implements¡¡Externalizable¡¡£û¡¡¡¡

¡¡¡¡int¡¡i£»¡¡¡¡

¡¡¡¡String¡¡s£»¡¡//¡¡No¡¡initialization¡¡¡¡

¡¡¡¡public¡¡Blip3£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip3¡¡Constructor¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡s£»¡¡i¡¡not¡¡initialized¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡Blip3£¨String¡¡x£»¡¡int¡¡a£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip3£¨String¡¡x£»¡¡int¡¡a£©¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡s¡¡=¡¡x£»¡¡¡¡

¡¡¡¡¡¡¡¡i¡¡=¡¡a£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡s¡¡&¡¡i¡¡initialized¡¡only¡¡in¡¡non¡­default¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡constructor¡£¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡String¡¡toString£¨£©¡¡£û¡¡return¡¡s¡¡£«¡¡i£»¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡writeExternal£¨ObjectOutput¡¡out£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡throws¡¡IOException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip3¡£writeExternal¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡You¡¡must¡¡do¡¡this£º¡¡¡¡

¡¡¡¡¡¡¡¡out¡£writeObject£¨s£©£»¡¡out¡£writeInt£¨i£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡readExternal£¨ObjectInput¡¡in£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡throws¡¡IOException£»¡¡ClassNotFoundException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Blip3¡£readExternal¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡You¡¡must¡¡do¡¡this£º¡¡¡¡

¡¡¡¡¡¡¡¡s¡¡=¡¡£¨String£©in¡£readObject£¨£©£»¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡321¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡323¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡i¡¡=in¡£readInt£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Constructing¡¡objects£º¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Blip3¡¡b3¡¡=¡¡new¡¡Blip3£¨¡¨A¡¡String¡¡¡¨£»¡¡47£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨b3¡£toString£¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ObjectOutputStream¡¡o¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡ObjectOutputStream£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡FileOutputStream£¨¡¨Blip3¡£out¡¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Saving¡¡object£º¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡o¡£writeObject£¨b3£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡o¡£close£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Now¡¡get¡¡it¡¡back£º¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ObjectInputStream¡¡in¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡ObjectInputStream£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡FileInputStream£¨¡¨Blip3¡£out¡¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Recovering¡¡b3£º¡¨£©¡¡£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡b3¡¡=¡¡£¨Blip3£©in¡£readObject£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨b3¡£toString£¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡catch£¨Exception¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡e¡£printStackTrace£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

ÆäÖУ¬×ֶΡ¡sºÍ¡¡i¡¡Ö»ÔÚµÚ¶þ¸ö¹¹½¨Æ÷Öгõʼ»¯£¬²»¹ØĬÈϹ¹½¨Æ÷µÄÊ¡£ÕâÒâζ׿ÙÈç²»ÔÚreadExternal¡¡Öгõ¡¡

ʼ»¯¡¡s¡¡ºÍ¡¡i£¬ËüÃǾͻá³ÉΪnull¡¡£¨ÒòΪÔÚ¶ÔÏó´´½¨µÄµÚÒ»²½ÖÐÒѽ«¶ÔÏóµÄ´æ´¢¿Õ¼äÇå³ýΪ1£©¡£Èô×¢Ê͵ô¸ú¡¡

ËæÓÚ¡°You¡¡must¡¡do¡¡this¡±ºóÃæµÄÁ½ÐдúÂ룬²¢ÔËÐгÌÐò£¬¾Í»á·¢ÏÖµ±¶ÔÏó»Ö¸´ÒÔºó£¬s¡¡ÊÇnull£¬¶øi¡¡ÊÇ¡¡

Áã¡£¡¡¡¡

Èô´ÓÒ»¸öExternalizable¡¡¶ÔÏó¼Ì³Ð£¬Í¨³£ÐèÒªµ÷ÓÃwriteExternal£¨£©ºÍ¡¡readExternal£¨£©µÄ»ù´¡Àà°æ±¾£¬ÒԱ㡡

ÕýÈ·µØ±£´æºÍ»Ö¸´»ù´¡Àà×é¼þ¡£¡¡¡¡

ËùÒÔΪÁËÈÃÒ»ÇÐÕý³£ÔË×÷ÆðÀ´£¬Ç§Íò²»¿É½öÔÚ¡¡writeExternal£¨£©·½·¨Ö´ÐÐÆÚ¼äдÈë¶ÔÏóµÄÖØÒªÊý¾Ý£¨Ã»ÓÐĬ¡¡

ÈϵÄÐÐΪ¿ÉÓÃÀ´ÎªÒ»¸ö¡¡Externalizable¡¡¶ÔÏóдÈëËùÓгÉÔ±¶ÔÏ󣩵ģ¬¶øÊDZØÐëÔÚ¡¡readExternal£¨£©·½·¨ÖÐÒ²¡¡

»Ö¸´ÄÇЩÊý¾Ý¡£³õ´Î²Ù×÷ʱ¿ÉÄÜ»áÓÐЩ²»Ï°¹ß£¬ÒòΪExternalizable¡¡¶ÔÏóµÄĬÈϹ¹½¨ÐÐΪʹÆä¿´ÆðÀ´ËƺõÕý¡¡

ÔÚ½øÐÐijÖÖ´æ´¢Óë»Ö¸´²Ù×÷¡£µ«ÊµÇé²¢·ÇÈç´Ë¡£¡¡¡¡

¡¡¡¡

1¡£¡¡transient¡¡£¨ÁÙʱ£©¹Ø¼ü×Ö¡¡¡¡

¿ØÖÆÐòÁл¯¹ý³Ìʱ£¬¿ÉÄÜÓÐÒ»¸öÌض¨µÄ×Ó¶ÔÏó²»Ô¸ÈÃJava¡¡µÄÐòÁл¯»úÖÆ×Ô¶¯±£´æÓë»Ö¸´¡£Ò»°ãµØ£¬ÈôÄǸö×Ó¡¡

¶ÔÏó°üº¬Á˲»ÏëÐòÁл¯µÄÃô¸ÐÐÅÏ¢£¨ÈçÃÜÂ룩£¬¾Í»áÃæÁÙÕâÖÖÇé¿ö¡£¼´Ê¹ÄÇÖÖÐÅÏ¢ÔÚ¶ÔÏóÖоßÓС°private¡±¡¡

¡¡£¨Ë½ÓУ©ÊôÐÔ£¬µ«Ò»µ©¾­ÐòÁл¯´¦Àí£¬ÈËÃǾͿÉÒÔͨ¹ý¶ÁÈ¡Ò»¸öÎļþ£¬»òÕßÀ¹½ØÍøÂç´«ÊäµÃµ½Ëü¡£¡¡¡¡

Ϊ·ÀÖ¹¶ÔÏóµÄÃô¸Ð²¿·Ö±»ÐòÁл¯£¬Ò»¸ö°ì·¨Êǽ«×Ô¼ºµÄÀàʵÏÖΪExternalizable£¬¾ÍÏóÇ°ÃæչʾµÄÄÇÑù¡£Õâ¡¡

ÑùÒ»À´£¬Ã»ÓÐÈκζ«Î÷¿ÉÒÔ×Ô¶¯ÐòÁл¯£¬Ö»ÄÜÔÚwriteExternal£¨£©Ã÷È·ÐòÁл¯ÄÇЩÐèÒªµÄ²¿·Ö¡£¡¡¡¡

È»¶ø£¬Èô²Ù×÷µÄÊÇÒ»¸ö¡¡Serializable¡¡¶ÔÏó£¬ËùÓÐÐòÁл¯²Ù×÷¶¼»á×Ô¶¯½øÐС£Îª½â¾öÕâ¸öÎÊÌ⣬¿ÉÒÔÓá¡

transient¡¡£¨ÁÙʱ£©Öð¸ö×ֶεعرÕÐòÁл¯£¬ËüµÄÒâ˼ÊÇ¡°²»ÒªÂé·³Ä㣨ָ×Ô¶¯»úÖÆ£©±£´æ»ò»Ö¸´ËüÁË¡ª¡ªÎÒ¡¡

»á×Ô¼º´¦ÀíµÄ¡±¡£¡¡¡¡

ÀýÈ磬¼ÙÉèÒ»¸öLogin¡¡¶ÔÏó°üº¬ÁËÓëÒ»¸öÌض¨µÄµÇ¼»á»°ÓйصÄÐÅÏ¢¡£Ð£ÑéµÇ¼µÄºÏ·¨ÐÔʱ£¬Ò»°ã¶¼Ï뽫Êý¡¡

¾Ý±£´æÏÂÀ´£¬µ«²»°üÀ¨ÃÜÂ롣Ϊ×öµ½ÕâÒ»µã£¬×î¼òµ¥µÄ°ì·¨ÊÇʵÏÖSerializable£¬²¢½«¡¡password¡¡×Ö¶ÎÉèΪ¡¡

transient¡£ÏÂÃæÊǾßÌåµÄ´úÂ룺¡¡¡¡

¡¡¡¡

//£º¡¡Logon¡£java¡¡¡¡

//¡¡Demonstrates¡¡the¡¡¡¨transient¡¨¡¡keyword¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡322¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡324¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

import¡¡java¡£io¡£*£»¡¡¡¡

import¡¡java¡£util¡£*£»¡¡¡¡

¡¡¡¡

class¡¡Logon¡¡implements¡¡Serializable¡¡£û¡¡¡¡

¡¡¡¡private¡¡Date¡¡date¡¡=¡¡new¡¡Date£¨£©£»¡¡¡¡

¡¡¡¡private¡¡String¡¡username£»¡¡¡¡

¡¡¡¡private¡¡transient¡¡String¡¡password£»¡¡¡¡

¡¡¡¡Logon£¨String¡¡name£»¡¡String¡¡pwd£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡username¡¡=¡¡name£»¡¡¡¡

¡¡¡¡¡¡¡¡password¡¡=¡¡pwd£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡String¡¡toString£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡String¡¡pwd¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£¨password¡¡==¡¡null£©¡¡£¿¡¡¡¨£¨n/a£©¡¨¡¡£º¡¡password£»¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡¡¨logon¡¡info£º¡¡n¡¡¡¡¡¡¡¨¡¡£«¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨username£º¡¡¡¨¡¡£«¡¡username¡¡£«¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨n¡¡¡¡¡¡date£º¡¡¡¨¡¡£«¡¡date¡£toString£¨£©¡¡£«¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨n¡¡¡¡¡¡password£º¡¡¡¨¡¡£«¡¡pwd£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡Logon¡¡a¡¡=¡¡new¡¡Logon£¨¡¨Hulk¡¨£»¡¡¡¨myLittlePony¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¨logon¡¡a¡¡=¡¡¡¨¡¡£«¡¡a£©£»¡¡¡¡

¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ObjectOutputStream¡¡o¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡ObjectOutputStream£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡FileOutputStream£¨¡¨Logon¡£out¡¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡o¡£writeObject£¨a£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡o¡£close£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Delay¡¡£º¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡int¡¡seconds¡¡=¡¡5£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡long¡¡t¡¡=¡¡System¡£currentTimeMillis£¨£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡seconds¡¡*¡¡1000£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡while£¨System¡£currentTimeMillis£¨£©¡¡¡¶¡¡t£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Now¡¡get¡¡them¡¡back£º¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ObjectInputStream¡¡in¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡ObjectInputStream£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡FileInputStream£¨¡¨Logon¡£out¡¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Recovering¡¡object¡¡at¡¡¡¨¡¡£«¡¡new¡¡Date£¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡a¡¡=¡¡£¨Logon£©in¡£readObject£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¨logon¡¡a¡¡=¡¡¡¨¡¡£«¡¡a£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡catch£¨Exception¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡e¡£printStackTrace£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

¿ÉÒÔ¿´µ½£¬ÆäÖеÄdate¡¡ºÍ¡¡username¡¡×ֶα£³Öԭʼ״̬£¨Î´Éè³Étransient£©£¬ËùÒÔ»á×Ô¶¯ÐòÁл¯¡£È»¶ø£¬¡¡

password¡¡±»ÉèΪ¡¡transient£¬ËùÒÔ²»»á×Ô¶¯±£´æµ½´ÅÅÌ£»ÁíÍ⣬×Ô¶¯ÐòÁл¯»úÖÆÒ²²»»á×÷»Ö¸´ËüµÄ³¢ÊÔ¡£Êä¡¡

³öÈçÏ£º¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡323¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡325¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡

logon¡¡a¡¡=¡¡logon¡¡info£º¡¡¡¡

¡¡¡¡¡¡username£º¡¡Hulk¡¡¡¡

¡¡¡¡¡¡date£º¡¡Sun¡¡Mar¡¡23¡¡18£º25£º53¡¡PST¡¡1997¡¡¡¡

¡¡¡¡¡¡password£º¡¡myLittlePony¡¡¡¡

Recovering¡¡object¡¡at¡¡Sun¡¡Mar¡¡23¡¡18£º25¡¡£º59¡¡PST¡¡1997¡¡¡¡

logon¡¡a¡¡=¡¡logon¡¡info£º¡¡¡¡

¡¡¡¡¡¡username£º¡¡Hulk¡¡¡¡

¡¡¡¡¡¡date£º¡¡Sun¡¡Mar¡¡23¡¡18£º25£º53¡¡PST¡¡1997¡¡¡¡

¡¡¡¡¡¡password£º¡¡£¨n/a£©¡¡¡¡

¡¡¡¡

Ò»µ©¶ÔÏó»Ö¸´³ÉÔ­À´µÄÑù×Ó£¬password¡¡×ֶξͻá±ä³Énull¡¡¡£×¢Òâ±ØÐëÓÃtoString£¨£©¼ì²épassword¡¡ÊÇ·ñΪ¡¡

null£¬ÒòΪÈôÓùýÔصġ°£«¡±ÔËËã·ûÀ´×°ÅäÒ»¸öString¡¡¶ÔÏ󣬶øÇÒÄǸöÔËËã·ûÓöµ½Ò»¸önull¡¡¾ä±ú£¬¾Í»áÔì³É¡¡

Ò»¸öÃûΪNullPointerException¡¡µÄÎ¥Àý£¨Ð°æJava¡¡¿ÉÄÜ»áÌṩ±ÜÃâÕâ¸öÎÊÌâµÄ´úÂ룩¡£¡¡¡¡

ÎÒÃÇÒ²·¢ÏÖ¡¡date¡¡×ֶα»±£´æµ½´ÅÅÌ£¬²¢´Ó´ÅÅָ̻´£¬Ã»ÓÐÖØÐÂÉú³É¡£¡¡¡¡

ÓÉÓÚExternalizable¡¡¶ÔÏóĬÈÏʱ²»±£´æËüµÄÈκÎ×ֶΣ¬ËùÒÔtransient¡¡¹Ø¼ü×ÖÖ»ÄÜ°éËæSerializable¡¡Ê¹¡¡

Óᣡ¡¡¡

¡¡¡¡

2¡£¡¡Externalizable¡¡µÄÌæ´ú·½·¨¡¡¡¡

Èô²»ÊÇÌرðÔÚÒâҪʵÏÖ¡¡Externalizable¡¡½Ó¿Ú£¬»¹ÓÐÁíÒ»ÖÖ·½·¨¿É¹©Ñ¡Óá£ÎÒÃÇ¿ÉÒÔʵÏÖ¡¡Serializable¡¡½Ó¡¡

¿Ú£¬²¢Ìí¼Ó£¨×¢ÒâÊÇ¡°Ìí¼Ó¡±£¬¶ø·Ç¡°¸²¸Ç¡±»òÕß¡°ÊµÏÖ¡±£©ÃûΪwriteObject£¨£©ºÍ¡¡readObject£¨£©µÄ·½·¨¡£¡¡

Ò»µ©¶ÔÏó±»ÐòÁл¯»òÕßÖØÐÂ×°Å䣬¾Í»á·Ö±ðµ÷ÓÃÄÇÁ½¸ö·½·¨¡£Ò²¾
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨1£© ²È£¨1£©
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡