ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ83²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡15£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pets¡£addElement£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡petTypes£§¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨int£©£¨Math¡£random£¨£©*petTypes¡£length£©£§¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£newInstance£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨InstantiationException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡catch£¨IllegalAccessException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡catch£¨ClassNotFoundException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡Hashtable¡¡h¡¡=¡¡new¡¡Hashtable£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡typenames¡£length£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡h¡£put£¨typenames£§i£§£»¡¡new¡¡Counter£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡pets¡£size£¨£©£»¡¡i£«£«£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Object¡¡o¡¡=¡¡pets¡£elementAt£¨i£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Pet£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¨Pet¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Dog£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¨Dog¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Pug£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¨Pug¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Cat£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¨Cat¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Rodent£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¨Rodent¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Gerbil£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¨Gerbil¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Hamster£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¨Hamster¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡pets¡£size£¨£©£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pets¡£elementAt£¨i£©¡£getClass£¨£©¡£toString£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡typenames¡£length£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡typenames£§i£§¡¡£«¡¡¡¨¡¡quantity£º¡¡¡¨¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨typenames£§i£§£©£©¡£i£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ÔÚJava¡¡1¡£0¡¡ÖУ¬¶Ô¡¡instanceof¡¡ÓÐÒ»¸ö±È½ÏСµÄÏÞÖÆ£ºÖ»¿É½«ÆäÓëÒ»¸öÒÑÃüÃûµÄÀàÐͱȽϣ¬²»ÄÜͬClass¡¡¶Ô¡¡
Ïó×÷¶Ô±È¡£ÔÚÉÏÊöÀý×ÓÖУ¬´ó¼Ò¿ÉÄܾõµÃ½«ËùÓÐÄÇЩinstanceof¡¡±í´ïʽд³öÀ´ÊǼþºÜÂé·³µÄÊÂÇ顣ʵ¼ÊÇé¿ö¡¡
ÕýÊÇÕâÑù¡£µ«ÔÚJava¡¡1¡£0¡¡ÖУ¬Ã»Óа취ÈÃÕâÒ»¹¤×÷×Ô¶¯½øÐСª¡ª²»ÄÜ´´½¨Class¡¡µÄÒ»¸öVector£¬ÔÙ½«ÆäÓë¡¡
Ö®±È½Ï¡£´ó¼Ò×îÖÕ»áÒâʶµ½£¬Èç±àдÁËÊýÁ¿ÖÚ¶àµÄ¡¡instanceof±í´ïʽ£¬Õû¸öÉè¼Æ¶¼¿ÉÄܳöÏÖÎÊÌâ¡£¡¡¡¡
µ±È»£¬Õâ¸öÀý×ÓÖ»ÊÇÒ»¸ö¹¹Ï롪¡ª×îºÃÔÚÿ¸öÀàÐÍÀïÌí¼ÓÒ»¸östaticÊý¾Ý³ÉÔ±£¬È»ºóÔÚ¹¹½¨Æ÷ÖÐÁîÆäÔöÖµ£¬¡¡
ÒÔ±ã¸ú×Ù¼ÆÊý¡£±àд³ÌÐòʱ£¬´ó¼Ò¿ÉÄÜÏëÏó×Ô¼ºÓµÓÐÀàµÄÔ´Âë¿ØÖÆȨ£¬Äܹ»×ÔÓɸĶ¯Ëü¡£µ«ÓÉÓÚʵ¼ÊÇé¿ö²¢¡¡
·Ç×ÜÊÇÕâÑù£¬ËùÒÔ¡¡RTTI¡¡ÏÔµÃÌر𷽱㡣¡¡¡¡
¡¡¡¡
1¡£¡¡Ê¹ÓÃÀà±ê¼Ç¡¡¡¡
PetCount¡£java¡¡Ê¾Àý¿ÉÓÃJava¡¡1¡£1¡¡µÄÀà±ê¼ÇÖØдһ±é¡£µÃµ½µÄ½á¹ûÏԵøü¼ÓÃ÷È·Ò׶®£º¡¡¡¡
¡¡¡¡
//£º¡¡PetCount2¡£java¡¡¡¡
//¡¡Using¡¡Java¡¡1¡£1¡¡class¡¡literals¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡338¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡340¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
package¡¡c11¡£petcount2£»¡¡¡¡
import¡¡java¡£util¡£*£»¡¡¡¡
¡¡¡¡
class¡¡Pet¡¡£û£ý¡¡¡¡
class¡¡Dog¡¡extends¡¡Pet¡¡£û£ý¡¡¡¡
class¡¡Pug¡¡extends¡¡Dog¡¡£û£ý¡¡¡¡
class¡¡Cat¡¡extends¡¡Pet¡¡£û£ý¡¡¡¡
class¡¡Rodent¡¡extends¡¡Pet¡¡£û£ý¡¡¡¡
class¡¡Gerbil¡¡extends¡¡Rodent¡¡£û£ý¡¡¡¡
class¡¡Hamster¡¡extends¡¡Rodent¡¡£û£ý¡¡¡¡
¡¡¡¡
class¡¡Counter¡¡£û¡¡int¡¡i£»¡¡£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡PetCount2¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Vector¡¡pets¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Class£§£§¡¡petTypes¡¡=¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Class¡¡literals¡¡work¡¡in¡¡Java¡¡1¡£1£«¡¡only£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Pet¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Dog¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Pug¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Cat¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Rodent¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Gerbil¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Hamster¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡15£»¡¡i£«£«£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Offset¡¡by¡¡one¡¡to¡¡eliminate¡¡Pet¡£class£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡int¡¡rnd¡¡=¡¡1¡¡£«¡¡£¨int£©£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Math¡£random£¨£©¡¡*¡¡£¨petTypes¡£length¡¡1£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pets¡£addElement£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡petTypes£§rnd£§¡£newInstance£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨InstantiationException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡catch£¨IllegalAccessException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡Hashtable¡¡h¡¡=¡¡new¡¡Hashtable£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡petTypes¡£length£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡h¡£put£¨petTypes£§i£§¡£toString£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Counter£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡pets¡£size£¨£©£»¡¡i£«£«£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Object¡¡o¡¡=¡¡pets¡£elementAt£¨i£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Pet£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨class¡¡c11¡£petcount2¡£Pet¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Dog£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨class¡¡c11¡£petcount2¡£Dog¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Pug£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨class¡¡c11¡£petcount2¡£Pug¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Cat£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡339¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡341¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨class¡¡c11¡£petcount2¡£Cat¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Rodent£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨class¡¡c11¡£petcount2¡£Rodent¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Gerbil£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨class¡¡c11¡£petcount2¡£Gerbil¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨o¡¡instanceof¡¡Hamster£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨class¡¡c11¡£petcount2¡£Hamster¡¨£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡pets¡£size£¨£©£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pets¡£elementAt£¨i£©¡£getClass£¨£©¡£toString£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Enumeration¡¡keys¡¡=¡¡h¡£keys£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡while£¨keys¡£hasMoreElements£¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡String¡¡nm¡¡=¡¡£¨String£©keys¡£nextElement£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Counter¡¡cnt¡¡=¡¡£¨Counter£©h¡£get£¨nm£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡nm¡£substring£¨nm¡£lastIndexOf£¨'¡£'£©¡¡£«¡¡1£©¡¡£«¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¡¡quantity£º¡¡¡¨¡¡£«¡¡cnt¡£i£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ÔÚÕâÀtypenames¡¡£¨ÀàÐÍÃû£©Êý×éÒѱ»É¾³ý£¬¸ÄΪ´ÓClass¡¡¶ÔÏóÀï»ñÈ¡ÀàÐÍÃû³Æ¡£×¢ÒâΪ´Ë¶ø¶îÍâ×öµÄ¹¤¡¡
×÷£ºÀýÈ磬ÀàÃû²»ÊÇGetbil£¬¶øÊÇc11¡£petcount2¡£Getbil£¬ÆäÖÐÒÑ°üº¬ÁË°üµÄÃû×Ö¡£Ò²Òª×¢ÒâϵͳÊÇÄܹ»Çø¡¡
·ÖÀàºÍ½Ó¿ÚµÄ¡£¡¡¡¡
Ò²¿ÉÒÔ¿´µ½£¬petTypes¡¡µÄ´´½¨Ä£¿é²»ÐèÒªÓÃÒ»¸ötry¡¡¿é°üΧÆðÀ´£¬ÒòΪËü»áÔÚ±àÒëÆڵõ½¼ì²é£¬²»»áÏó¡¡
Class¡£forName£¨£©ÄÇÑù¡°ÖÀ¡±³öÈκÎÎ¥Àý¡£¡¡¡¡
Pet¡¡¶¯Ì¬´´½¨ºÃÒԺ󣬿ÉÒÔ¿´µ½Ëæ»úÊý×ÖÒѵõ½ÁËÏÞÖÆ£¬Î»ÓÚ¡¡1ºÍ¡¡petTypes¡£length¡¡Ö®¼ä£¬¶øÇÒ²»°üÀ¨Áã¡£¡¡
ÄÇÊÇÓÉÓÚÁã´ú±íµÄÊÇPet¡£class£¬¶øÇÒÒ»¸öÆÕͨµÄ¡¡Pet¡¡¶ÔÏó¿ÉÄܲ»»áÓÐÈ˸ÐÐËȤ¡£È»¶ø£¬ÓÉÓÚPet¡£class¡¡ÊÇ¡¡
petTypes¡¡µÄÒ»²¿·Ö£¬ËùÒÔËùÓÐPet¡¡£¨³èÎ¶¼»áËãÈë¼ÆÊýÖС£¡¡¡¡
¡¡¡¡
2¡£¡¡¶¯Ì¬µÄ¡¡instanceof¡¡¡¡
Java¡¡1¡£1¡¡ÎªClass¡¡ÀàÌí¼ÓÁË¡¡isInstance·½·¨¡£ÀûÓÃËü¿ÉÒÔ¶¯Ì¬µ÷Óá¡instanceof¡¡ÔËËã·û¡£¶øÔÚJava¡¡1¡£0¡¡
ÖУ¬Ö»Äܾ²Ì¬µØµ÷ÓÃËü£¨¾ÍÏóÇ°ÃæÖ¸³öµÄÄÇÑù£©¡£Òò´Ë£¬ËùÓÐÄÇЩ·³È˵ġ¡instanceofÓï¾ä¶¼¿ÉÒÔ´Ó¡¡
PetCount¡¡Àý×ÓÖÐɾȥÁË¡£ÈçÏÂËùʾ£º¡¡¡¡
¡¡¡¡
//£º¡¡PetCount3¡£java¡¡¡¡
//¡¡Using¡¡Java¡¡1¡£1¡¡isInstance£¨£©¡¡¡¡
package¡¡c11¡£petcount3£»¡¡¡¡
import¡¡java¡£util¡£*£»¡¡¡¡
¡¡¡¡
class¡¡Pet¡¡£û£ý¡¡¡¡
class¡¡Dog¡¡extends¡¡Pet¡¡£û£ý¡¡¡¡
class¡¡Pug¡¡extends¡¡Dog¡¡£û£ý¡¡¡¡
class¡¡Cat¡¡extends¡¡Pet¡¡£û£ý¡¡¡¡
class¡¡Rodent¡¡extends¡¡Pet¡¡£û£ý¡¡¡¡
class¡¡Gerbil¡¡extends¡¡Rodent¡¡£û£ý¡¡¡¡
class¡¡Hamster¡¡extends¡¡Rodent¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡340¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡342¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
class¡¡Counter¡¡£û¡¡int¡¡i£»¡¡£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡PetCount3¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Vector¡¡pets¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Class£§£§¡¡petTypes¡¡=¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Pet¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Dog¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Pug¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Cat¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Rodent¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Gerbil¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Hamster¡£class£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡15£»¡¡i£«£«£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Offset¡¡by¡¡one¡¡to¡¡eliminate¡¡Pet¡£class£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡int¡¡rnd¡¡=¡¡1¡¡£«¡¡£¨int£©£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Math¡£random£¨£©¡¡*¡¡£¨petTypes¡£length¡¡1£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pets¡£addElement£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡petTypes£§rnd£§¡£newInstance£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨InstantiationException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡catch£¨IllegalAccessException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡Hashtable¡¡h¡¡=¡¡new¡¡Hashtable£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡petTypes¡£length£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡h¡£put£¨petTypes£§i£§¡£toString£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Counter£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡pets¡£size£¨£©£»¡¡i£«£«£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Object¡¡o¡¡=¡¡pets¡£elementAt£¨i£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Using¡¡isInstance¡¡to¡¡eliminate¡¡individual¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡instanceof¡¡expressions£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡for¡¡£¨int¡¡j¡¡=¡¡0£»¡¡j¡¡¡¶¡¡petTypes¡£length£»¡¡£«£«j£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡if¡¡£¨petTypes£§j£§¡£isInstance£¨o£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡String¡¡key¡¡=¡¡petTypes£§j£§¡£toString£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Counter£©h¡£get£¨key£©£©¡£i£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡pets¡£size£¨£©£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pets¡£elementAt£¨i£©¡£getClass£¨£©¡£toString£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Enumeration¡¡keys¡¡=¡¡h¡£keys£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡while£¨keys¡£hasMoreElements£¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡String¡¡nm¡¡=¡¡£¨String£©keys¡£nextElement£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Counter¡¡cnt¡¡=¡¡£¨Counter£©h¡£get£¨nm£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡nm¡£substring£¨nm¡£lastIndexOf£¨'¡£'£©¡¡£«¡¡1£©¡¡£«¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¡¡quantity£º¡¡¡¨¡¡£«¡¡cnt¡£i£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡341¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡343¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
¿ÉÒÔ¿´µ½£¬Java¡¡1¡£1¡¡µÄisInstance£¨£©·½·¨ÒÑÈ¡ÏûÁ˶ԡ¡instanceof¡¡±í´ïʽµÄÐèÒª¡£´ËÍ⣬ÕâÒ²Òâζ×ÅÒ»µ©Òª¡¡
ÇóÌí¼ÓÐÂÀàÐͳèÎֻÐè¼òµ¥µØ¸Ä±äpetTypes¡¡Êý×é¼´¿É£»ÎãÐè¸Ä¶¯³ÌÐòÊ£ÓàµÄ²¿·Ö£¨µ«ÔÚʹÓá¡instanceof¡¡
ʱȴÊDZØÐèµÄ£©¡£¡¡¡¡
11¡£2¡¡RTTI¡¡Óï·¨¡¡¡¡
Java¡¡ÓÃClass¡¡¶ÔÏóʵÏÖ×Ô¼ºµÄRTTI¡¡¹¦ÄÜ¡ª¡ª¼´±ãÎÒÃÇÒª×öµÄÖ»ÊÇÏóÔìÐÍÄÇÑùµÄһЩ¹¤×÷¡£Class¡¡ÀàÒ²ÌṩÁË¡¡
ÆäËû´óÁ¿·½Ê½£¬ÒÔ·½±ãÎÒÃÇʹÓÃRTTI¡£¡¡¡¡
Ê×ÏȱØÐë»ñµÃÖ¸ÏòÊʵ±¡¡Class¡¡¶ÔÏóµÄµÄÒ»¸ö¾ä±ú¡£¾ÍÏóÇ°ÀýÑÝʾµÄÄÇÑù£¬Ò»¸ö°ì·¨ÊÇÓÃÒ»¸ö×Ö´®ÒÔ¼°¡¡
Class¡£forName£¨£©·½·¨¡£ÕâÊǷdz£·½±ãµÄ£¬ÒòΪ²»ÐèÒªÄÇÖÖÀàÐ͵ÄÒ»¸ö¶ÔÏóÀ´»ñÈ¡¡¡Class¡¡¾ä±ú¡£È»¶ø£¬¶ÔÓÚ×Ô¡¡
¼º¸ÐÐËȤµÄÀàÐÍ£¬Èç¹ûÒÑÓÐÁËËüµÄÒ»¸ö¶ÔÏó£¬ÄÇôΪÁËÈ¡µÃClass¡¡¾ä±ú£¬¿Éµ÷ÓÃÊôÓÚ¡¡Object¡¡¸ùÀàÒ»²¿·ÖµÄÒ»¡¡
¸ö·½·¨£ºgetClass£¨£©¡£ËüµÄ×÷ÓÃÊÇ·µ»ØÒ»¸öÌض¨µÄClass¡¡¾ä±ú£¬ÓÃÀ´±íʾ¶ÔÏóµÄʵ¼ÊÀàÐÍ¡£Class¡¡ÌṩÁ˼¸¡¡
¸öÓÐȤÇÒ½ÏΪÓÐÓõķ½·¨£¬´ÓÏÂÀý¼´¿É¿´³ö£º¡¡¡¡
¡¡¡¡
//£º¡¡ToyTest¡£java¡¡¡¡
//¡¡Testing¡¡class¡¡Class¡¡¡¡
¡¡¡¡
interface¡¡HasBatteries¡¡£û£ý¡¡¡¡
interface¡¡Waterproof¡¡£û£ý¡¡¡¡
interface¡¡ShootsThings¡¡£û£ý¡¡¡¡
class¡¡Toy¡¡£û¡¡¡¡
¡¡¡¡//¡¡ment¡¡out¡¡the¡¡following¡¡default¡¡¡¡
¡¡¡¡//¡¡constructor¡¡to¡¡see¡¡¡¡¡¡
¡¡¡¡//¡¡NoSuchMethodError¡¡from¡¡£¨*1*£©¡¡¡¡
¡¡¡¡Toy£¨£©¡¡£û£ý¡¡¡¡¡¡
¡¡¡¡Toy£¨int¡¡i£©¡¡£û£ý¡¡¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡FancyToy¡¡extends¡¡Toy¡¡¡¡¡¡
¡¡¡¡¡¡¡¡implements¡¡HasBatteries£»¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Waterproof£»¡¡ShootsThings¡¡£û¡¡¡¡
¡¡¡¡FancyToy£¨£©¡¡£û¡¡super£¨1£©£»¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡ToyTest¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Class¡¡c¡¡=¡¡null£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡c¡¡=¡¡Class¡£forName£¨¡¨FancyToy¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨ClassNotFoundException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡printInfo£¨c£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Class£§£§¡¡faces¡¡=¡¡c¡£getInterfaces£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡faces¡£length£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡printInfo£¨faces£§i£§£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Class¡¡cy¡¡=¡¡c¡£getSuperclass£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Object¡¡o¡¡=¡¡null£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Requires¡¡default¡¡constructor£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡o¡¡=¡¡cy¡£newInstance£¨£©£»¡¡//¡¡£¨*1*£©¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨InstantiationException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡catch£¨IllegalAccessException¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡342¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡344¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡printInfo£¨o¡£getClass£¨£©£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡static¡¡void¡¡printInfo£¨Class¡¡cc£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨Class¡¡name£º¡¡¡¨¡¡£«¡¡cc¡£getName£¨£©¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨¡¡¡¡is¡¡interface£¿¡¡£§¡¨¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡cc¡£isInterface£¨£©¡¡£«¡¡¡¨£§¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
´ÓÖпÉÒÔ¿´³ö£¬class¡¡FancyToy¡¡Ï൱¸´ÔÓ£¬ÒòΪËü´ÓToy¡¡Öм̳У¬²¢ÊµÏÖÁËHasBatteries£¬Waterproof¡¡ÒÔ¡¡
¼°ShootsThings¡¡µÄ½Ó¿Ú¡£ÔÚmain£¨£©Öд´½¨ÁËÒ»¸öClass¡¡¾ä±ú£¬²¢ÓÃλÓÚÏàÓ¦¡¡try¡¡¿éÄڵġ¡forName£¨£©³õʼ»¯³É¡¡
FancyToy¡¡¡£¡¡¡¡
Class¡£getInterfaces¡¡·½·¨»á·µ»Ø¡¡Class¡¡¶ÔÏóµÄÒ»¸öÊý×飬ÓÃÓÚ±íʾ°üº¬ÔÚ¡¡Class¡¡¶ÔÏóÄڵĽӿڡ£¡¡¡¡
ÈôÓÐÒ»¸öClass¡¡¶ÔÏó£¬Ò²¿ÉÒÔÓÃgetSuperclass£¨£©²éѯ¸Ã¶ÔÏóµÄÖ±½Ó»ù´¡ÀàÊÇʲô¡£µ±È»£¬ÕâÖÖ×ö»á·µ»ØÒ»¡¡
¸öClass¡¡¾ä±ú£¬¿ÉÓÃËü×÷½øÒ»²½µÄ²éѯ¡£ÕâÒâζ×ÅÔÚÔËÐÐÆÚµÄʱºò£¬ÍêÈ«Óлú»áµ÷²éµ½¶ÔÏóµÄÍêÕû²ã´Î½á¡¡
¹¹¡£¡¡¡¡
Èô´Ó±íÃæ¿´£¬Class¡¡µÄnewInstance£¨£©·½·¨ËƺõÊ
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡