java ÐòÁл¯
¶ÔÏóÐòÁл¯(Serializable)ÊÇÖ¸½«¶ÔÏóת»»Îª×Ö½ÚÐòÁеĹý³Ì£¬¶ø·´ÐòÁл¯ÔòÊǸù¾Ý×Ö½ÚÐòÁлָ´¶ÔÏóµÄ¹ý³Ì¡£
ÐòÁл¯Ò»°ãÓÃÓÚÒÔϳ¡¾°£º
1.ÓÀ¾ÃÐÔ±£´æ¶ÔÏ󣬱£´æ¶ÔÏóµÄ×Ö½ÚÐòÁе½±¾µØÎļþÖУ»
2.ͨ¹ýÐòÁл¯¶ÔÏóÔÚÍøÂçÖд«µÝ¶ÔÏó£»
3.ͨ¹ýÐòÁл¯ÔÚ½ø³Ì¼ä´«µÝ¶ÔÏó¡£
¶ÔÏóËùÊôµÄÀà±ØÐëʵÏÖSerializable»òÊÇExternalizable½Ó¿Ú²ÅÄܱ»ÐòÁл¯¡£¶ÔʵÏÖÁËSerializable½Ó¿ÚµÄÀ࣬ÆäÐòÁл¯Óë·´ÐòÁл¯²ÉÓÃĬÈϵÄÐòÁл¯·½Ê½£¬Externalizable½Ó¿ÚÊǼ̳ÐÁËSerializable½Ó¿ÚµÄ½Ó¿Ú£¬ÊǶÔSerializable µÄÀ©Õ¹£¬ÊµÏÖÁËExternalizable½Ó¿ÚµÄÀàÍêÈ«×Ô¼º¿ØÖÆÐòÁл¯Óë·´ÐòÁл¯ÐÐΪ¡£
Java.io.ObjectOutputStream´ú±í¶ÔÏóÊä³öÁ÷£¬Æä·½·¨writeObject(Object obj)¿ÉÒÔʵÏÖ¶ÔÏóµÄÐòÁл¯£¬½«µÃµ½µÄ×Ö½ÚÐòÁÐдµ½Ä¿±êÊä³öÁ÷ÖС£Java.io.ObjectInputStream´ú±í¶ÔÏóÊäÈëÁ÷£¬Æä readObject()·½·¨ÄÜ´ÓÔ´ÊäÈëÁ÷ÖжÁÈ¡×Ö½ÚÐòÁУ¬½«Æä·´ÐòÁл¯Îª¶ÔÏ󣬲¢½«Æä·µ»Ø¡£
JavaµÄÐòÁл¯»úÖÆÖ»ÐòÁл¯¶ÔÏóµÄÊôÐÔÖµ£¬¶ø²»»áÈ¥ÐòÁл¯Ê²Ã´ËùνµÄ·½·¨¡£ÆäʵÕâ¸öÎÊÌâ¼òµ¥Ë¼¿¼Ò»Ï¾ͿÉÒÔ¸ãÇå³þ£¬·½·¨ÊDz»´ø×´Ì¬µÄ£¬¾ÍÊÇһЩָÁָÁîÊDz»ÐèÒªÐòÁл¯µÄ£¬Ö»ÒªÄãµÄJVM classloader¿ÉÒÔloadµ½Õâ¸öÀ࣬ÄÇôÀà·½·¨Ö¸Áî×ÔÈ»¾Í¿ÉÒÔ»ñµÃ¡£ÐòÁл¯ÕæÕýÐèÒª±£´æµÄÖ»ÊǶÔÏóÊôÐÔµÄÖµ£¬ºÍ¶ÔÏóµÄÀàÐÍ¡£
ÐòÁл¯ÔËÐÐʱʹÓÃÒ»¸ö³ÆÎª serialVersionUID µÄ°æ±¾ºÅÓëÿ¸ö¿ÉÐòÁл¯ÀàÏà¹ØÁª£¬¸ÃÐòÁкÅÔÚ·´ÐòÁл¯¹ý³ÌÖÐÓÃÓÚÑéÖ¤ÐòÁл¯¶ÔÏóµÄ·¢ËÍÕߺͽÓÊÕÕßÊÇ·ñΪ¸Ã¶ÔÏó¼ÓÔØÁËÓëÐòÁл¯¼æÈݵÄÀà¡£Èç¹û½ÓÊÕÕß¼ÓÔØµÄ¸Ã¶ÔÏóµÄÀàµÄ ¿ÉÐòÁл¯Àà¿ÉÒÔͨ¹ýÉùÃ÷ÃûΪ "serialVersionUID" µÄ×ֶΣ¨¸Ã×ֶαØÐëÊǾ²Ì¬ (static)¡¢×îÖÕ (final) µÄ long ÐÍ×ֶΣ©ÏÔʽÉùÃ÷Æä×Ô¼ºµÄ serialVersionUID£º ½¨ÒéÐèÒªÐòÁл¯µÄ¶ÔÏó¶¼ÉùÃ÷×Ô¼ºµÄÐòÁл¯id£¬ÒòΪjava ĬÈϵÄÐòÁл¯id µÄÉú³ÉÔÚ ÐòÁл¯·½ºÍ·´ÐòÁл¯·½Éú³ÉµÄÖµ¿ÉÄܲ»Ò»Ö¡£
Èç¹ûÐòÁл¯ÀàµÄÓë·´ÐòÁл¯À಻һÑù»áÅ×Òì³£
java.lang.ClassCastException: com.taobao.serialize.test.DomainObject cannot be cast to com.taobao.serialize.test.DomainObject_2
Èç¹ûÐòÁл¯ÀàµÄÓë·´ÐòÁл¯ÀàµÄ ÐòÁл¯id ²»Ò»Ñù£¬Ôò»áÅ×Òì³£
java.io.InvalidClassException: com.taobao.serialize.test.DomainObject; local class incompatible: stream classdesc serialVersionUID = 697337918497451172, local class serialVersionUID = 697337918497451171
Ö»ÒªÐòÁл¯id Ò»Ñù£¬£¬ÐòÁл¯ÀàÃûÒ»Ñù£¬ÐòÁл¯µÄÐÅÏ
Ïà¹ØÎĵµ£º
»ù±¾Êý¾ÝÀàÐÍ
ÔÚJAVAÖÐÒ»¹²ÓаËÖÖ»ù±¾Êý¾ÝÀàÐÍ£¬ËûÃÇ·Ö±ðÊÇ
byte¡¢short¡¢int¡¢long¡¢float¡¢double¡¢char¡¢boolean
ÕûÐÍ
ÆäÖÐbyte¡¢short¡¢int¡¢long¶¼ÊDZíʾÕûÊýµÄ£¬Ö»²»¹ýËûÃǵÄȡֵ·¶Î§²»Ò»Ñù
byteµÄȡֵ·¶Î§Îª-128~127£¬Õ¼ÓÃ1¸ö×Ö½Ú£¨-2µÄ7´Î·½µ½2µÄ7´Î·½-1£©£º¾ßÌåÇë¿´²¹Âë
shortµÄȡֵ·¶Î§Îª-32768~32767£¬Õ¼Ó ......
1. Ëõ½øÅŰæ(Indentation)
4¸ö¿Õ¸ñ³£±»×÷ΪËõ½øÅŰæµÄÒ»¸öµ¥Î»¡£Ëõ½øµÄÈ·ÇнâÊͲ¢Î´Ïêϸָ¶¨(¿Õ¸ñ vs. ÖÆ±í·û)¡£Ò»¸öÖÆ±í·ûµÈÓÚn¸ö¿Õ¸ñ(ÊÓ¾ßÌåµÄ±à¼Æ÷¶ø¶¨£¬EclipseĬÈÏÒ»¸öÖÆ±í·ûΪ4¸ö×Ö·û)¡£
3.1 Ð㤶È(Line Length)
¾¡Á¿±ÜÃâÒ»Ðеij¤¶È³¬¹ý80¸ö×Ö·û£¬ÒòΪºÜ ......
1. ±à³Ì¹ßÀý(Programming Practices)
9.1 Ìṩ¶ÔʵÀýÒÔ¼°Àà±äÁ¿µÄ·ÃÎÊ¿ØÖÆ(Providing Access to Instance and Class Variables)
ÈôûÓÐ×ã¹»ÀíÓÉ£¬²»Òª°ÑʵÀý»òÀà±äÁ¿ÉùÃ÷Ϊ¹«ÓС£Í¨³££¬ÊµÀý±äÁ¿ÎÞÐèÏÔʽµÄÉèÖÃ(set)ºÍ»ñÈ¡(gotten)£¬Í¨³£Õâ×÷Ϊ·½·¨µ÷ÓõıßԵЧӦ (side effect ......
1¡¢Collection ºÍ CollectionsµÄÇø±ð¡£
CollectionsÊǸöjava.utilϵÄÀ࣬Ëü°üº¬Óи÷ÖÖÓйØjava¼¯ºÏ²Ù×÷µÄ¾²Ì¬·½·¨¡£
CollectionÊǸöjava.utilϵĽӿڣ¬ËüÊǸ÷ÖÖjava¼¯ºÏ½á¹¹µÄ¸¸½Ó¿Ú
2¡¢List, Set, MapÊÇ·ñ¼Ì³Ð×ÔCollection½Ó¿Ú? List£¬SetÊÇ Map²»ÊÇ
3¡¢ArrayListºÍVectorµÄÇø±ð¡£
(1).ͬ²½ÐÔ:VectorÊÇÏß³Ì ......
½ñÌìÊÇ2010Äê1ÔÂ23ºÅÁ賿£¬ÎÒºöÈ»×öÁ˸ö¾ö¶¨£¬Ï£Íû²»»áÁ÷²ú¡£ËäÈ»×î½üÒªºÃºÃѧϰӢÓ»¹ÒªÓÃC#Ϊһ¸öŮʿ×öÒ»¸öÔ±¹¤¹ÜÀíϵͳ¡£µ«ÊÇÎÒ¾ö¶¨Ã¿Ìì³é³öÖÁÉÙ3СʱºÃºÃѧϰjava¿´Á½ÖÜÄÜѧµ½Ê²Ã´¶«Î÷¡£
ÏÖÔÚ½ö½ö»á°²×°ÅäÖÃjdk£¬ÓøöecpliseºÍJcreator±àдµã¼òµ¥³ÌÐò¡£Á¬jdk
api¶¼²»È ......