°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
RTTI¡¡³£±»ÀÄÓã¨ÈÃËü²éÕÒϵͳÖеÄÿһÖÖÀàÐÍ£©£¬»áÔì³É´úÂëµÄÀ©Õ¹ÄÜÁ¦´ó´òÕÛ¿Û¡ª¡ªÌí¼ÓÒ»ÖÖÐÂÀàÐÍʱ£¬¡¡
±ØÐëÕÒ³öʹÓÃÁËRTTI¡¡µÄËùÓдúÂë¡£¼´Ê¹½öÒÅ©ÁËÆäÖеÄÒ»¸ö£¬Ò²²»ÄÜ´Ó±àÒëÆ÷ÄÇÀïµÃµ½ÈκΰïÖú¡£¡¡¡¡
È»¶ø£¬RTTI¡¡±¾Éí²¢²»»á×Ô¶¯²úÉú·ÇÀ©Õ¹ÐԵĴúÂë¡£ÈÃÎÒÃÇÔÙÀ´¿´Ò»¿´Ç°ÃæÌáµ½µÄÀ¬»ø»ØÊÕÀý×Ó¡£ÕâÒ»´Î×¼±¸¡¡
ÒýÈëÒ»ÖÖй¤¾ß£¬ÎÒ°ÑËü½Ð×÷TypeMap¡£ÆäÖаüº¬ÁËÒ»¸öHashtable¡¡£¨É¢ÁÐ±í£©£¬ÆäÖÐÈÝÄÉÁ˶à¸öVector£¬¡¡
µ«½Ó¿Ú·Ç³£¼òµ¥£º¿ÉÒÔÌí¼Ó£¨add£¨£©£©Ò»¸öжÔÏ󣬿ÉÒÔ»ñµÃ£¨get£¨£©£©Ò»¸öVector£¬ÆäÖаüº¬ÁËÊôÓÚijÖÖÌØ¡¡
¶¨ÀàÐ͵ÄËùÓжÔÏó¡£¶ÔÓÚÕâ¸ö°üº¬µÄÉ¢ÁÐ±í£¬ËüµÄ¹Ø¼üÔÚÓÚ¶ÔÓ¦µÄVector¡¡ÀïµÄÀàÐÍ¡£ÕâÖÖÉè¼Æ·½°¸µÄÓŵ㡡
¡¡£¨¸ù¾ÝLarry¡¡O'Brien¡¡µÄ½¨Ò飩ÊÇÔÚÓöµ½Ò»ÖÖÐÂÀàÐ͵Äʱºò£¬TypeMap¡¡»á¶¯Ì¬¼ÓÈëÒ»ÖÖÐÂÀàÐÍ¡£ËùÒÔ²»¹Üʲ¡¡
ôʱºò£¬Ö»Òª½«Ò»ÖÖÐÂÀàÐͼÓÈëϵͳ£¨¼´Ê¹ÔÚÔËÐÐÆÚ¼äÌí¼Ó£©£¬ËüÒ²»áÕýÈ·ÎÞÎ󵨵ÃÒÔ½ÓÊÜ¡£¡¡¡¡
ÎÒÃǵÄÀý×ÓͬÑù½¨Á¢ÔÚ¡¡c16¡£Trash¡¡Õâ¸ö¡°°ü¡±£¨Package£©ÄÚµÄTrash¡¡ÀàÐͽṹµÄ»ù´¡ÉÏ£¨¶øÇÒÄǶùʹÓõġ¡
Trash¡£dat¡¡Îļþ¿ÉÒÔÕÕ°áµ½ÕâÀïÀ´£©¡£¡¡¡¡
¡¡¡¡
//£º¡¡DynaTrash¡£java¡¡¡¡¡¡
//¡¡Using¡¡a¡¡Hashtable¡¡of¡¡Vectors¡¡and¡¡RTTI¡¡¡¡
//¡¡to¡¡automatically¡¡sort¡¡trash¡¡into¡¡¡¡
//¡¡vectors¡£¡¡This¡¡solution£»¡¡desp¡¡ite¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡618¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡620¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
//¡¡use¡¡of¡¡RTTI£»¡¡is¡¡extensible¡£¡¡¡¡
package¡¡c16¡£dynatrash£»¡¡¡¡
import¡¡c16¡£trash¡£*£»¡¡¡¡
import¡¡java¡£util¡£*£»¡¡¡¡
¡¡¡¡
//¡¡Generic¡¡TypeMap¡¡works¡¡in¡¡any¡¡situation£º¡¡¡¡
class¡¡TypeMap¡¡£û¡¡¡¡
¡¡¡¡private¡¡Hashtable¡¡t¡¡=¡¡new¡¡Hashtable£¨£©£»¡¡¡¡
¡¡¡¡public¡¡void¡¡add£¨Object¡¡o£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Class¡¡type¡¡=¡¡o¡£getClass£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨t¡£containsKey£¨type£©£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Vector£©t¡£get£¨type£©£©¡£addElement£¨o£©£»¡¡¡¡
¡¡¡¡¡¡¡¡else¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Vector¡¡v¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡v¡£addElement£¨o£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡t¡£put£¨type£»v£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Vector¡¡get£¨Class¡¡type£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡£¨Vector£©t¡£get£¨type£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Enumeration¡¡keys£¨£©¡¡£û¡¡return¡¡t¡£keys£¨£©£»¡¡£ý¡¡¡¡
¡¡¡¡//¡¡Returns¡¡handle¡¡to¡¡adapter¡¡class¡¡to¡¡allow¡¡¡¡
¡¡¡¡//¡¡callbacks¡¡from¡¡ParseTrash¡£fillBin£¨£©£º¡¡¡¡
¡¡¡¡public¡¡Fillable¡¡filler£¨£©¡¡£û¡¡¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡Anonymous¡¡inner¡¡class£º¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡new¡¡Fillable£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡public¡¡void¡¡addTrash£¨Trash¡¡t£©¡¡£û¡¡add£¨t£©£»¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡£ý£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡DynaTrash¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡TypeMap¡¡bin¡¡=¡¡new¡¡TypeMap£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡ParseTrash¡£fillBin£¨¡¨Trash¡£dat¡¨£»bin¡£filler£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Enumeration¡¡keys¡¡=¡¡bin¡£keys£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡while£¨keys¡£hasMoreElements£¨£©£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Trash¡£sumValue£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bin¡£get£¨£¨Class£©keys¡£nextElement£¨£©£©£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
¾¡¹Ü¹¦ÄܺÜÇ¿£¬µ«¶ÔTypeMap¡¡µÄ¶¨ÒåÊǷdz£¼òµ¥µÄ¡£ËüÖ»Êǰüº¬ÁËÒ»¸öÉ¢ÁÐ±í£¬Í¬Ê±add£¨£©¸ºµ£Á˴󲿷ֵġ¡
¹¤×÷¡£Ìí¼ÓÒ»¸öÐÂÀàÐÍʱ£¬ÄÇÖÖÀàÐ͵ÄClass¡¡¶ÔÏóµÄ¾ä±ú»á±»ÌáÈ¡³öÀ´¡£Ëæºó£¬ÀûÓÃÕâ¸ö¾ä±úÅжÏÈÝÄÉÁËÄÇ¡¡
Àà¶ÔÏóµÄÒ»¸öVector¡¡ÊÇ·ñÒÑ´æÔÚÓÚÉ¢ÁбíÖС£Èç´ð°¸Êǿ϶¨µÄ£¬¾ÍÌáÈ¡³öÄǸö¡¡Vector£¬²¢½«¶ÔÏó¼ÓÈëÆä¡¡
ÖУ»·´Ö®£¬¾Í½«Class¡¡¶ÔÏó¼°ÐÂVector¡¡×÷Ϊһ¸ö¡°¼ü£Öµ¡±¶Ô¼ÓÈë¡£¡¡¡¡
ÀûÓÃkeys£¨£©¡¡£¬¿ÉÒԵõ½¶ÔËùÓÐClass¡¡¶ÔÏóµÄÒ»¸ö¡°Ã¶¾Ù¡±£¨Enumeration£©£¬¶øÇÒ¿ÉÓÃget£¨£©£¬¿Éͨ¹ýClass¡¡
¶ÔÏó»ñÈ¡¶ÔÓ¦µÄVector¡£¡¡¡¡
filler£¨£©·½·¨·Ç³£ÓÐȤ£¬ÒòΪËüÀûÓÃÁË¡¡ParseTrash¡£fillBin£¨£©µÄÉè¼Æ¡ª¡ª²»½öÄܳ¢ÊÔÌî³äÒ»¸öVector£¬Ò²ÄÜ¡¡
ÓÃËüµÄ¡¡addTrash£¨£©·½·¨ÊÔ×ÅÌî³äʵÏÖÁË¡¡Fillable¡¡£¨¿ÉÌî³ä£©½Ó¿ÚµÄÈκζ«Î÷¡£filter£¨£©¡¡ÐèÒª×öµÄÈ«²¿ÊÂÇé¾Í¡¡
Êǽ«Ò»¸ö¾ä±ú·µ»Ø¸øÊµÏÖÁËFillable¡¡µÄÒ»¸ö½Ó¿Ú£¬È»ºó½«Õâ¸ö¾ä±ú×÷Ϊ²ÎÊý´«µÝ¸ø¡¡fillBin£¨£©£¬¾ÍÏóÏÂÃæÕâ¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡619¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡621¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Ñù£º¡¡¡¡
ParseTrash¡£fillBin£¨¡¨Trash¡£dat¡¨£»¡¡bin¡£filler£¨£©£©£»¡¡¡¡
Ϊ²úÉúÕâ¸ö¾ä±ú£¬ÎÒÃDzÉÓÃÁËÒ»¸ö¡°ÄäÃûÄÚ²¿Àࡱ£¨ÒÑÔÚµÚ7¡¡Õ½²Êö£©¡£ÓÉÓÚ¸ù±¾²»ÐèÒªÓÃÒ»¸öÒÑÃüÃûµÄÀà¡¡
À´ÊµÏÖFillable¡¡£¬Ö»ÐèÒªÊôÓÚÄǸöÀàµÄÒ»¸ö¶ÔÏóµÄ¾ä±ú¼´¿É£¬ËùÒÔÕâÀïʹÓÃÄäÃûÄÚ²¿ÀàÊǷdz£Ç¡µ±µÄ¡£¡¡¡¡
¶ÔÕâ¸öÉè¼Æ£¬Òª×¢ÒâµÄÒ»¸öµØ·½ÊǾ¡¹ÜûÓÐÉè¼Æ³É¶Ô¹éÀà¼ÓÒÔ¿ØÖÆ£¬µ«ÔÚ¡¡fillBin£¨£©Ã¿´Î½øÐйéÀàµÄʱºò£¬¡¡
¶¼»á½«Ò»¸ö¡¡Trash¡¡¶ÔÏó²åÈë¡¡bin¡£¡¡¡¡
ͨ¹ýÇ°ÃæÄÇЩÀý×ÓµÄѧϰ£¬DynaTrash¡¡ÀàµÄ´ó¶àÊý²¿·Ö¶¼Ó¦µ±·Ç³£ÊìϤÁË¡£ÕâÒ»´Î£¬ÎÒÃDz»ÔÙ½«Ðµġ¡Trash¡¡
¶ÔÏóÖÃÈëÀàÐÍVector¡¡µÄÒ»¸öbin¡¡ÄÚ¡£ÓÉÓÚbin¡¡µÄÀàÐÍΪTypeMap£¬ËùÒÔ½«À¬»ø£¨Trash£©¶ª½øÀ¬»øÍ²£¨Bin£©¡¡
µÄʱºò£¬TypeMap¡¡µÄÄÚ²¿¹éÀà»úÖÆ»áÁ¢¼´½øÐÐÊʵ±µÄ·ÖÀà¡£ÔÚTypeMap¡¡Àï±éÀú²¢¶Ôÿ¸ö¶ÀÁ¢µÄ¡¡Vector¡¡½øÐв١¡
×÷£¬ÕâÊÇÒ»¼þÏ൱¼òµ¥µÄÊÂÇ飺¡¡¡¡
¡¡¡¡
¡¡¡¡¡¡¡¡Enumeration¡¡keys¡¡=¡¡bin¡£keys£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡while£¨keys¡£hasMoreElements£¨£©£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Trash¡£sumValue£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bin¡£get£¨£¨Class£©keys¡£nextElement£¨£©£©£©£»¡¡¡¡
¡¡¡¡
¾ÍÏó´ó¼Ò¿´µ½µÄÄÇÑù£¬ÐÂÀàÐÍÏòϵͳµÄ¼ÓÈë¸ù±¾²»»áÓ°Ïìµ½ÕâЩ´úÂ룬Ò಻»áÓ°ÏìTypeMap¡¡ÖеĴúÂë¡£ÕâÏÔ¡¡
È»Êǽâ¾öÎÊÌâ×îÔ²ÂúµÄ·½°¸¡£¾¡¹ÜËüȷʵÑÏÖØÒÀÀµ¡¡RTTI£¬µ«Çë×¢ÒâÉ¢ÁбíÖеÄÿ¸ö¼ü£Öµ¶Ô¶¼Ö»²éÕÒÒ»ÖÖÀà¡¡
ÐÍ¡£³ý´ËÒÔÍ⣬ÔÚÎÒÃÇÔö¼ÓÒ»ÖÖÐÂÀàÐ͵Äʱºò£¬²»»áÏÝÈë¡°Íü¼Ç¡±Ïòϵͳ¼ÓÈëÕýÈ·´úÂëµÄÞÏÞξ³µØ£¬ÒòΪ¸ù¡¡
±¾¾ÍûÓÐʲô´úÂëÐèÒªÌí¼Ó¡£¡¡¡¡
16¡£9¡¡×ܽᡡ¡¡
´Ó±íÃæ¿´£¬ÓÉÓÚÏó¡¡TrashVisitor¡£java¡¡ÕâÑùµÄÉè¼Æ°üº¬Á˱ÈÔçÆÚÉè¼ÆÊýÁ¿¸ü¶àµÄ´úÂ룬ËùÒÔ»áÁôÏÂЧÂʲ»¸ß¡¡
µÄÓ¡Ïó¡£ÊÔͼÓø÷ÖÖÉè¼Æ·½°¸´ïµ½Ê²Ã´Ä¿µÄÓ¦¸ÃÊÇÎÒÃÇ¿¼ÂǵÄÖØµã¡£Éè¼Æ·¶Ê½ÌرðÊʺϡ°½«·¢Éú±ä»¯µÄ¶«Î÷¡¡
Óë±£³Ö²»±äµÄ¶«Î÷¸ôÀ뿪¡±¡£¶ø¡°·¢Éú±ä»¯µÄ¶«Î÷¡±¿ÉÒÔ´ú±íÐí¶àÖֱ仯¡£Ö®ËùÒÔ·¢Éú±ä»¯£¬¿ÉÄÜÊÇÓÉÓڳ̡¡
Ðò½øÈëÒ»¸öл·¾³£¬»òÕßÓÉÓÚµ±Ç°»·¾³µÄһЩ¶«Î÷·¢ÉúÁ˱仯£¨ÀýÈç¡°Óû§Ï£ÍûÔÚÆÁÄ»Éϵ±Ç°ÏÔʾµÄͼʾÖС¡
Ìí¼ÓÒ»ÖÖÐµļ¸ºÎÐÎ×´¡±£©¡£»òÕß¾ÍÏó±¾ÕÂÃèÊöµÄÄÇÑù£¬±ä»¯¿ÉÄÜÊǶԴúÂëÖ÷ÌåµÄ²»¶Ï¸Ä½ø¡£¾¡¹Ü·ÏÆ··ÖÀà¡¡
ÒÔǰµÄÀý×ÓÇ¿µ÷ÁËÐÂÐÍTrash¡¡ÏòϵͳµÄ¼ÓÈ룬µ«TrashVisitor¡£java¡¡ÔÊÐíÎÒÃÇ·½±ãµØÌí¼Óй¦ÄÜ£¬Í¬Ê±²»»á¡¡
¶ÔTrash¡¡½á¹¹Ôì³É¸ÉÈÅ¡£TrashVisitor¡£java¡¡Àïȷʵ¶à³öÁËÐí¶à´úÂ룬µ«ÔÚ¡¡Visitor¡¡ÀïÌí¼Óй¦ÄÜÖ»ÐèÒª¼«¡¡
СµÄ´ú¼Û¡£Èç¹û¾³£¶¼Òª½øÐдËÀà»î¶¯£¬ÄÇô¶àһЩ´úÂëÒ²ÊÇÖµµÃµÄ¡£¡¡¡¡
±ä»¯ÐòÁеķ¢ÏÖ²¢·ÇÒ»¼þƽ³£Ê£»ÔÚ³ÌÐòµÄ³õʼÉè¼Æ³ǫ̈ÒÔǰ£¬ÄÇЩ·ÖÎö¼ÒÒ»°ã²»¿ÉÄÜÔ¤²âµ½ÕâÖֱ仯¡£³ý¡¡
·Ç½øÈëÏîÄ¿Éè¼ÆµÄºóÆÚ£¬·ñÔòһЩ±ØÒªµÄÐÅÏ¢ÊDz»»áÏÔ¶³öÀ´µÄ£ºÓÐʱֻÓнøÈëÉè¼Æ»ò×îÖÕʵÏֽ׶Σ¬²ÅÄÜ¡¡
Ìå»áµ½¶Ô×Ô¼ºÏµÍ³Ò»¸ö¸üÉîÈë»ò¸ü²»Òײì¾õÐèÒª¡£Ìí¼ÓÐÂÀàÐÍʱ£¨ÕâÊÇ¡°»ØÊÕ¡±Àý×Ó×îÖ÷ÒªµÄÒ»¸öÖØµã£©£¬¡¡
¿ÉÄÜ»áÒâʶµ½Ö»ÓÐ×Ô¼º½øÈëά»¤½×¶Î£¬¶øÇÒ¿ªÊ¼À©³äϵͳʱ£¬²ÅÐèÒªÒ»¸öÌØ¶¨µÄ¼Ì³Ð½á¹¹¡£¡¡¡¡
ͨ¹ýÉè¼Æ·¶Ê½µÄѧϰ£¬´ó¼Ò¿ÉÌå»áµ½×îÖØÒªµÄÒ»¼þÊÂÇé¾ÍÊDZ¾ÊéÒ»Ö±ÐûÑïµÄÒ»¸ö¹Ûµã¡ª¡ª¶àÐÎÐÔÊÇOOP¡¡£¨Ãæ¡¡
Ïò¶ÔÏó³ÌÐòÉè¼Æ£©µÄÈ«²¿¡ª¡ªÒÑ·¢ÉúÁ˳¹µ×µÄ¸Ä±ä¡£»»¾ä»°Ëµ£¬ºÜÄÑ¡°»ñµÃ¡±¶àÐÎÐÔ£»¶øÒ»µ©»ñµÃ£¬¾ÍÐèÒª¡¡
³¢ÊÔ½«×Ô¼ºµÄËùÓÐÉè¼Æ¶¼ÔìÐ͵½Ò»¸öÌØ¶¨µÄÄ£×ÓÀïÈ¥¡£¡¡¡¡
Éè¼Æ·¶Ê½Òª±íÃ÷µÄ¹ÛµãÊÇ¡°OOP¡¡²¢²»½ö½öͬ¶àÐÎÐÔÓйء±¡£Ó¦µ±Óë¡¡OOP¡¡ÓйصÄÊÇ¡°½«·¢Éú±ä»¯µÄ¶«Î÷ͬ±£³Ö¡¡
²»±äµÄ¶«Î÷·Ö¸ô¿ªÀ´¡