°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ʽ£¬ÒòΪÔÚ¡¡Java¡¡ÖУ¬ËùÓÐÔìÐͶ¼»áÔÚÔËÐÐÆÚ¼äµÃµ½¼ì²é£¬ÒÔÈ·±£ÆäÕýÈ·ÐÔ¡£ÄÇÕýÊÇRTTI¡¡µÄÒâÒåËùÔÚ£ºÔÚÔË¡¡
ÐÐÆÚ£¬¶ÔÏóµÄÀàÐÍ»áµÃµ½¼ø¶¨¡£¡¡¡¡
ÔÚĿǰÕâÖÖÇé¿öÏ£¬RTTI¡¡ÔìÐÍֻʵÏÖÁËÒ»²¿·Ö£ºObject¡¡ÔìÐͳɡ¡Shape£¬¶ø²»ÊÇÔìÐͳÉCircle£¬Square¡¡»òÕß¡¡
Triangle¡¡¡£ÄÇÊÇÓÉÓÚÎÒÃÇĿǰÄܹ»¿Ï¶¨µÄΨһÊÂʵ¾ÍÊÇVector¡¡Àï³ä³â׿¸ºÎÐÎ×´£¬¶ø²»ÖªËüÃǵľßÌåÀà±ð¡£¡¡
ÔÚ±àÒëÆÚ¼ä£¬ÎÒÃǿ϶¨µÄÒÀ¾ÝÊÇÎÒÃÇ×Ô¼ºµÄ¹æÔò£»¶øÔÚ±àÒëÆÚ¼ä£¬È´ÊÇͨ¹ýÔìÐÍÀ´¿Ï¶¨ÕâÒ»µã¡£¡¡¡¡
ÏÖÔڵľÖÃæ»áÓɶàÐÎÐÔ¿ØÖÆ£¬¶øÇÒ»áΪShape¡¡µ÷ÓÃÊʵ±µÄ·½·¨£¬ÒÔ±ãÅжϾä±úµ½µ×ÊÇÌṩCircle£¬Square£¬¡¡
»¹ÊÇÌṩ¸ø¡¡Triangle¡¡¡£¶øÇÒÔÚÒ»°ãÇé¿öÏ£¬±ØÐë±£Ö¤²ÉÓöàÐÎÐÔ·½°¸¡£ÒòΪÎÒÃÇÏ£Íû×Ô¼ºµÄ´úÂ뾡¿ÉÄÜÉÙÖª¡¡
µÀһЩÓë¶ÔÏóµÄ¾ßÌåÀàÐÍÓйصÄÇé¿ö£¬Ö»½«×¢ÒâÁ¦·ÅÔÚijһÀà¶ÔÏó£¨ÕâÀïÊÇShape£©µÄ³£¹æÐÅÏ¢ÉÏ¡£Ö»ÓÐÕâ¡¡
Ñù£¬ÎÒÃǵĴúÂë²Å¸üÒ×ʵÏÖ¡¢Àí½âÒÔ¼°Ð޸ġ£ËùÒÔ˵¶àÐÎÐÔÊÇÃæÏò¶ÔÏó³ÌÐòÉè¼ÆµÄÒ»¸ö³£¹æÄ¿±ê¡£¡¡¡¡
È»¶ø£¬ÈôÅöµ½Ò»¸öÌØÊâµÄ³ÌÐòÉè¼ÆÎÊÌ⣬ֻÓÐÔÚÖªµÀ³£¹æ¾ä±úµÄÈ·ÇÐÀàÐͺ󣬲ÅÄÜ×îÈÝÒ׵ؽâ¾öÕâ¸öÎÊÌ⣬¡¡
Õâ¸öʱºòÓÖ¸ÃÔõô°ìÄØ£¿¾Ù¸öÀý×ÓÀ´Ëµ£¬ÎÒÃÇÓÐʱºòÏëÈÃ×Ô¼ºµÄÓû§½«Ä³Ò»¾ßÌåÀàÐ͵ļ¸ºÎÐÎ×´£¨ÈçÈý½Ç¡¡
ÐΣ©È«¶¼±ä³É×ÏÉ«£¬ÒÔ±ãÍ»³öÏÔʾËüÃÇ£¬²¢¿ìËÙÕÒ³öÕâÒ»ÀàÐ͵ÄËùÓÐÐÎ×´¡£´Ëʱ±ãÒªÓõ½RTTI¡¡¼¼Êõ£¬ÓÃËü²é¡¡
ѯij¸ö¡¡Shape¡¡¾ä±úÒýÓõÄ׼ȷÀàÐÍÊÇʲô¡£¡¡¡¡
11¡£1¡£1¡¡Class¡¡¶ÔÏó¡¡¡¡
ΪÀí½âRTTI¡¡ÔÚ¡¡Java¡¡ÀïÈçºÎ¹¤×÷£¬Ê×ÏȱØÐëÁ˽âÀàÐÍÐÅÏ¢ÔÚÔËÐÐÆÚÊÇÈçºÎ±íʾµÄ¡£ÕâʱҪÓõ½Ò»¸öÃûΪ¡¡
¡¡¡°Class¡¡¶ÔÏó¡±µÄÌØÊâÐÎʽµÄ¶ÔÏ󣬯äÖаüº¬ÁËÓëÀàÓйصÄÐÅÏ¢£¨ÓÐʱҲ°ÑËü½Ð×÷¡°ÔªÀࡱ£©¡£ÊÂʵÉÏ£¬ÎÒ¡¡
ÃÇÒªÓá¡Class¡¡¶ÔÏó´´½¨ÊôÓÚij¸öÀàµÄÈ«²¿¡°³£¹æ¡±»ò¡°ÆÕͨ¡±¶ÔÏ󡣡¡¡¡
¶ÔÓÚ×÷Ϊ³ÌÐòÒ»²¿·ÖµÄÿ¸öÀ࣬ËüÃǶ¼ÓÐÒ»¸ö¡¡Class¡¡¶ÔÏó¡£»»ÑÔÖ®£¬Ã¿´Îдһ¸öÐÂÀàʱ£¬Í¬Ê±Ò²»á´´½¨Ò»¸ö¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡334¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡336¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Class¡¡¶ÔÏ󣨸üÇ¡µ±µØËµ£¬ÊDZ£´æÔÚÒ»¸öÍêȫͬÃûµÄ¡£class¡¡ÎļþÖУ©¡£ÔÚÔËÐÐÆÚ£¬Ò»µ©ÎÒÃÇÏëÉú³ÉÄǸöÀàµÄ¡¡
Ò»¸ö¶ÔÏó£¬ÓÃÓÚÖ´ÐгÌÐòµÄ¡¡Java¡¡ÐéÄâ»ú£¨JVM£©Ê×ÏȾͻá¼ì²éÄǸöÀàÐ͵ÄClass¡¡¶ÔÏóÊÇ·ñÒÑ¾ÔØÈë¡£ÈôÉÐδ¡¡
ÔØÈ룬JVM¡¡¾Í»á²éÕÒͬÃûµÄ¡£class¡¡Îļþ£¬²¢½«ÆäÔØÈë¡£ËùÒÔJava¡¡³ÌÐòÆô¶¯Ê±²¢²»ÊÇÍêÈ«ÔØÈëµÄ£¬ÕâÒ»µãÓëÐí¡¡
¶à´«Í³ÓïÑÔ¶¼²»Í¬¡£¡¡¡¡
Ò»µ©ÄǸöÀàÐ͵ÄClass¡¡¶ÔÏó½øÈëÄڴ棬¾ÍÓÃËü´´½¨ÄÇÒ»ÀàÐ͵ÄËùÓжÔÏ󡣡¡¡¡
ÈôÕâÖÖ˵·¨¶àÉÙÈÃÄã²úÉúÁËÒ»µã¶ùÃԻ󣬻òÕß²¢Ã»ÓÐÕæÕýÀí½âËü£¬ÏÂÃæÕâ¸öʾ·¶³ÌÐò»òÐíÄÜÌṩ½øÒ»²½µÄ°ï¡¡
Öú£º¡¡¡¡
¡¡¡¡
//£º¡¡SweetShop¡£java¡¡¡¡
//¡¡Examination¡¡of¡¡the¡¡way¡¡the¡¡class¡¡loader¡¡works¡¡¡¡
¡¡¡¡
class¡¡Candy¡¡£û¡¡¡¡
¡¡¡¡static¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Loading¡¡Candy¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Gum¡¡£û¡¡¡¡
¡¡¡¡static¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Loading¡¡Gum¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Cookie¡¡£û¡¡¡¡
¡¡¡¡static¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Loading¡¡Cookie¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡SweetShop¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨inside¡¡main¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Candy£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨After¡¡creating¡¡Candy¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Class¡£forName£¨¡¨Gum¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨ClassNotFoundException¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡e¡£printStackTrace£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨After¡¡Class¡£forName£¨¡±Gum¡±£©¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Cookie£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨After¡¡creating¡¡Cookie¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
¶Ôÿ¸öÀàÀ´Ëµ£¨Candy£¬Gum¡¡ºÍCookie£©£¬ËüÃǶ¼ÓÐÒ»¸ö¡¡static´Ó¾ä£¬ÓÃÓÚÔÚÀàÊ×´ÎÔØÈëʱִÐС£ÏàÓ¦µÄÐÅ¡¡
Ï¢»á´òÓ¡³öÀ´£¬¸æËßÎÒÃÇÔØÈëÊÇʲôʱºò½øÐеġ£ÔÚmain£¨£©ÖУ¬¶ÔÏóµÄ´´½¨´úÂëλÓÚ´òÓ¡Óï¾äÖ®¼ä£¬ÒÔ±ãÕì¡¡
²âÔØÈëʱ¼ä¡£¡¡¡¡
ÌØ±ðÓÐȤµÄÒ»ÐÐÊÇ£º¡¡¡¡
Class¡£forName£¨¡¨Gum¡¨£©£»¡¡¡¡
¸Ã·½·¨ÊÇClass¡¡£¨¼´È«²¿Class¡¡Ëù´ÓÊôµÄ£©µÄÒ»¸ö¡¡static³ÉÔ±¡£¶ø¡¡Class¡¡¶ÔÏóºÍÆäËûÈκζÔÏó¶¼ÊÇÀàËÆµÄ£¬¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡335¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡337¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ËùÒÔÄܹ»»ñÈ¡ºÍ¿ØÖÆËüµÄÒ»¸ö¾ä±ú£¨×°ÔØÄ£¿é¾ÍÊǸÉÕâ¼þÊµģ©¡£Îª»ñµÃ¡¡Class¡¡µÄÒ»¸ö¾ä±ú£¬Ò»¸ö°ì·¨ÊÇʹ¡¡
ÓÃforName£¨£©¡£ËüµÄ×÷ÓÃÊÇÈ¡µÃ°üº¬ÁËÄ¿±êÀàÎı¾Ãû×ÖµÄÒ»¸öString¡¡£¨×¢ÒâÆ´Ð´ºÍ´óСд£©¡£×îºó·µ»ØµÄÊÇ¡¡
Ò»¸öClass¡¡¾ä±ú¡£¡¡¡¡
¸Ã³ÌÐòÔÚij¸öJVM¡¡ÖеÄÊä³öÈçÏ£º¡¡¡¡
¡¡¡¡
inside¡¡main¡¡¡¡
Loading¡¡Candy¡¡¡¡
After¡¡creating¡¡Candy¡¡¡¡
Loading¡¡Gum¡¡¡¡
After¡¡Class¡£forName£¨¡¨Gum¡¨£©¡¡¡¡
Loading¡¡Cookie¡¡¡¡
After¡¡creating¡¡Cookie¡¡¡¡
¡¡¡¡
¿ÉÒÔ¿´µ½£¬Ã¿¸öClass¡¡Ö»ÓÐÔÚËüÐèÒªµÄʱºò²Å»áÔØÈ룬¶ø¡¡static¡¡³õʼ»¯¹¤×÷ÊÇÔÚÀàÔØÈëʱִÐеġ£¡¡¡¡
·Ç³£ÓÐȤµÄÊÇ£¬ÁíÒ»¸ö¡¡JVM¡¡µÄÊä³ö±ä³ÉÁËÁíÒ»¸öÑù×Ó£º¡¡¡¡
¡¡¡¡
Loading¡¡Candy¡¡¡¡
Loading¡¡Cookie¡¡¡¡
inside¡¡main¡¡¡¡
After¡¡creating¡¡Candy¡¡¡¡
Loading¡¡Gum¡¡¡¡
After¡¡Class¡£forName£¨¡¨Gum¡¨£©¡¡¡¡
After¡¡creating¡¡Cookie¡¡¡¡
¡¡¡¡
¿´À´JVM¡¡Í¨¹ý¼ì²émain£¨£©ÖеĴúÂ룬ÒѾԤ²âµ½Á˶ÔCandy¡¡ºÍCookie¡¡µÄÐèÒª£¬µ«È´¿´²»µ½Gum£¬ÒòΪËüÊÇͨ¡¡
¹ý¶ÔforName£¨£©µÄÒ»¸öµ÷Óô´½¨µÄ£¬¶ø²»ÊÇͨ¹ý¸üµäÐ͵Änew¡¡µ÷Ó᣾¡¹ÜÕâ¸öJVM¡¡Ò²´ïµ½ÁËÎÒÃÇÏ£ÍûµÄЧ¡¡
¹û£¬ÒòΪȷʵ»áÔÚÎÒÃÇÐèÒªÖ®Ç°ÔØÈëÄÇЩÀ࣬µ«È´²»Äܿ϶¨Õâ¶ùչʾµÄÐÐΪ°Ù·ÖÖ®°ÙÕýÈ·¡£¡¡¡¡
¡¡¡¡
1¡£¡¡Àà±ê¼Ç¡¡¡¡
ÔÚJava¡¡1¡£1¡¡ÖУ¬¿ÉÒÔ²ÉÓõڶþÖÖ·½Ê½À´²úÉúClass¡¡¶ÔÏóµÄ¾ä±ú£ºÊ¹Óá°Àà±ê¼Ç¡±¡£¶ÔÉÏÊö³ÌÐòÀ´Ëµ£¬¿´ÆðÀ´¡¡
¾ÍÏóÏÂÃæÕâÑù£º¡¡¡¡
Gum¡£class£»¡¡¡¡
ÕâÑù×ö²»½ö¸ü¼Ó¼òµ¥£¬¶øÇÒ¸ü°²È«£¬ÒòΪËü»áÔÚ±àÒëÆÚ¼äµÃµ½¼ì²é¡£ÓÉÓÚËüÈ¡ÏûÁ˶Է½·¨µ÷ÓõÄÐèÒª£¬ËùÒÔ¡¡
Ö´ÐеÄЧÂÊÒ²»á¸ü¸ß¡£¡¡¡¡
Àà±ê¼Ç²»½ö¿ÉÒÔÓ¦ÓÃÓÚÆÕͨÀ࣬Ҳ¿ÉÒÔÓ¦ÓÃÓÚ½Ó¿Ú¡¢Êý×éÒÔ¼°»ù±¾Êý¾ÝÀàÐÍ¡£³ý´ËÒÔÍ⣬Õë¶ÔÿÖÖ»ù±¾Êý¾Ý¡¡
ÀàÐ͵ķâ×°Æ÷À࣬Ëü»¹´æÔÚÒ»¸öÃûΪTYPE¡¡µÄ±ê×¼×ֶΡ£TYPE¡¡×ֶεÄ×÷ÓÃÊÇΪÏà¹ØµÄ»ù±¾Êý¾ÝÀàÐͲúÉú¡¡Class¡¡
¶ÔÏóµÄÒ»¸ö¾ä±ú£¬ÈçÏÂËùʾ£º¡¡¡¡
¡¡¡¡
¡£¡£¡£¡¡is¡¡equivalent¡¡to¡¡¡£¡£¡£¡¡¡¡
boolean¡£class¡¡Boolean¡£TYPE¡¡¡¡
char¡£class¡¡¡¡¡¡¡¡Character¡£TYPE¡¡¡¡
byte¡£class¡¡¡¡¡¡Byte¡£TYPE¡¡¡¡
short¡£class¡¡¡¡Short¡£TYPE¡¡¡¡
int¡£class¡¡¡¡¡¡¡¡¡¡Integer¡£TYPE¡¡¡¡
long¡£class¡¡¡¡¡¡¡¡Long¡£TYPE¡¡¡¡
float¡£class¡¡¡¡Float¡£TYPE¡¡¡¡
double¡£class¡¡Double¡£TYPE¡¡¡¡
void¡£class¡¡¡¡¡¡Void¡£TYPE¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡336¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡338¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
11¡£1¡£2¡¡ÔìÐÍǰµÄ¼ì²é¡¡¡¡
Æù½ñΪֹ£¬ÎÒÃÇÒÑÖªµÄ¡¡RTTI¡¡ÐÎʽ°üÀ¨£º¡¡¡¡
£¨1£©¡¡¾µäÔìÐÍ£¬È硨£¨Shape£©¡¨£¬ËüÓá¡RTTI¡¡È·±£ÔìÐ͵ÄÕýÈ·ÐÔ£¬²¢ÔÚÓöµ½Ò»¸öʧ°ÜµÄÔìÐͺó²úÉúÒ»¸ö¡¡
ClassCastException¡¡Î¥Àý¡£¡¡¡¡
£¨2£©¡¡´ú±í¶ÔÏóÀàÐ͵ÄClass¡¡¶ÔÏ󡣿ɲéѯClass¡¡¶ÔÏ󣬻ñÈ¡ÓÐÓõÄÔËÐÐÆÚ×ÊÁÏ¡£¡¡¡¡
¡¡¡¡
ÔÚC£«£«ÖУ¬¾µäµÄ¡¨£¨Shape£©¡¨ÔìÐͲ¢²»Ö´ÐÐRTTI¡¡¡£ËüÖ»ÊǼòµ¥µØ¸æËß±àÒëÆ÷½«¶ÔÏóµ±×÷ÐÂÀàÐÍ´¦Àí¡£¶øJava¡¡
ÒªÖ´ÐÐÀàÐͼì²é£¬Õâͨ³£½Ð×÷¡°ÀàÐͰ²È«¡±µÄÏÂËÝÔìÐÍ¡£Ö®ËùÒԽС°ÏÂËÝÔìÐÍ¡±£¬ÊÇÓÉÓÚÀà·Ö²ã½á¹¹µÄÀúÊ·¡¡
ÅÅÁз½Ê½Ôì³ÉµÄ¡£Èô½«Ò»¸öCircle¡¡£¨Ô²£©ÔìÐ͵½Ò»¸öShape¡¡£¨¼¸ºÎÐÎ×´£©£¬¾Í½Ð×