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

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

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



ÅÅÁз½Ê½Ôì³ÉµÄ¡£Èô½«Ò»¸öCircle¡¡£¨Ô²£©ÔìÐ͵½Ò»¸öShape¡¡£¨¼¸ºÎÐÎ×´£©£¬¾Í½Ð×öÉÏËÝÔìÐÍ£¬ÒòΪԲֻÊǼ¸¡¡

ºÎÐÎ×´µÄÒ»¸ö×Ó¼¯¡£·´Ö®£¬Èô½«Shape¡¡ÔìÐÍÖÁ¡¡Circle£¬¾Í½Ð×öÏÂËÝÔìÐÍ¡£È»¶ø£¬¾¡¹ÜÎÒÃÇÃ÷È·ÖªµÀCircle¡¡

Ò²ÊÇÒ»¸öShape£¬ËùÒÔ±àÒëÆ÷Äܹ»×Ô¶¯ÉÏËÝÔìÐÍ£¬µ«È´²»Äܱ£Ö¤Ò»¸öShape¡¡¿Ï¶¨ÊÇÒ»¸ö¡¡Circle¡£Òò´Ë£¬±àÒë¡¡

Æ÷²»ÔÊÐí×Ô¶¯ÏÂËÝÔìÐÍ£¬³ý·ÇÃ÷È·Ö¸¶¨Ò»´ÎÕâÑùµÄÔìÐÍ¡£¡¡¡¡

RTTI¡¡ÔÚJava¡¡ÖдæÔÚÈýÖÖÐÎʽ¡£¹Ø¼ü×Ö¡¡instanceof¸æËßÎÒÃǶÔÏóÊDz»ÊÇÒ»¸öÌض¨ÀàÐ͵ÄʵÀý£¨Instance¡¡¼´¡¡

¡¡¡°ÊµÀý¡±£©¡£Ëü»á·µ»ØÒ»¸ö²¼¶ûÖµ£¬ÒÔ±ãÒÔÎÊÌâµÄÐÎʽʹÓ㬾ÍÏóÏÂÃæÕâÑù£º¡¡¡¡

if£¨x¡¡instanceof¡¡Dog£©¡¡¡¡

£¨£¨Dog£©x£©¡£bark£¨£©£»¡¡¡¡

½«x¡¡ÔìÐÍÖÁÒ»¸ö¡¡Dog¡¡Ç°£¬ÉÏÃæµÄ¡¡ifÓï¾ä»á¼ì²é¶ÔÏóx¡¡ÊÇ·ñ´ÓÊôÓÚ¡¡Dog¡¡Àà¡£½øÐÐÔìÐÍÇ°£¬Èç¹ûûÓÐÆäËûÐÅÏ¢¿É¡¡

ÒÔ¸æËß×Ô¼º¶ÔÏóµÄÀàÐÍ£¬ÄÇôinstanceof¡¡µÄʹÓÃÊǷdz£ÖØÒªµÄ¡ª¡ª·ñÔò»áµÃµ½Ò»¸öClassCastException¡¡Î¥¡¡

Àý¡£¡¡¡¡

ÎÒÃÇ×îÒ»°ãµÄ×ö·¨ÊDzéÕÒÒ»ÖÖÀàÐÍ£¨±ÈÈçÒª±ä³É×ÏÉ«µÄÈý½ÇÐΣ©£¬µ«ÏÂÃæÕâ¸ö³ÌÐòÈ´ÑÝʾÁËÈçºÎÓá¡

instanceof±ê¼Ç³öËùÓжÔÏ󡣡¡¡¡

¡¡¡¡

//£º¡¡PetCount¡£java¡¡¡¡

//¡¡Using¡¡instanceof¡¡¡¡

package¡¡c11¡£petcount£»¡¡¡¡

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¡¡PetCount¡¡£û¡¡¡¡

¡¡¡¡static¡¡String£§£§¡¡typenames¡¡=¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¨Pet¡¨£»¡¡¡¨Dog¡¨£»¡¡¡¨Pug¡¨£»¡¡¡¨Cat¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¨Rodent¡¨£»¡¡¡¨Gerbil¡¨£»¡¡¡¨Hamster¡¨£»¡¡¡¡

¡¡¡¡£ý£»¡¡¡¡

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

¡¡¡¡¡¡¡¡Vector¡¡pets¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡

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

¡¡¡¡¡¡¡¡¡¡¡¡Class£§£§¡¡petTypes¡¡=¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡£forName£¨¡¨c11¡£petcount¡£Dog¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡£forName£¨¡¨c11¡£petcount¡£Pug¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡£forName£¨¡¨c11¡£petcount¡£Cat¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡£forName£¨¡¨c11¡£petcount¡£Rodent¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡£forName£¨¡¨c11¡£petcount¡£Gerbil¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡£forName£¨¡¨c11¡£petcount¡£Hamster¡¨£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡337¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡339¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡£ý£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡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£¨£©·½·¨ËƺõÊÇ¿Ë¡£¨clone£¨£©£©Ò»¸ö¶ÔÏóµÄÁíÒ»ÖÖÊֶΡ£µ«Á½ÕßÊÇÓÐÇø±ð¡¡

µÄ¡£ÀûÓÃnewInstance£¨£©¡¡£¬ÎÒÃÇ¿ÉÔÚûÓÐÏֳɶÔÏ󹩡°¿Ë¡¡±µÄÇé¿öÏÂн¨Ò»¸ö¶ÔÏó¡£¾ÍÏóÉÏÃæµÄ³ÌÐòÑÝʾ¡¡

µÄÄÇÑù£¬µ±Ê±Ã»ÓÐToy¡¡¶ÔÏó£¬Ö»ÓС¡cy¡ª¡ª¼´y¡¡µÄClass¡¡¶ÔÏóµÄÒ»¸ö¾ä±ú¡£ÀûÓÃËü¿ÉÒÔʵÏÖ¡°ÐéÄâ¹¹½¨Æ÷¡±¡£¡¡

»»ÑÔÖ®£¬ÎÒÃDZí´ï£º¡°¾¡¹ÜÎÒ²»ÖªµÀÄãµÄ׼ȷÀàÐÍÊÇʲô£¬µ«ÇëÄãÎÞÂÛÈçºÎ¶¼ÕýÈ·µØ´´½¨×Ô¼º¡£¡±ÔÚÉÏÊöÀý¡¡

×ÓÖУ¬cy¡¡Ö»ÊÇÒ»¸öClass¡¡¾ä±ú£¬±àÒëÆڼ䲢²»ÖªµÀ½øÒ»²½µÄÀàÐÍÐÅÏ¢¡£Ò»µ©Ð½¨ÁËÒ»¸öʵÀýºó£¬¿ÉÒԵõ½¡¡

Object¡¡¾ä±ú¡£µ«ÄǸö¾ä±úÖ¸ÏòÒ»¸öToy¡¡¶ÔÏó¡£µ±È»£¬Èç¹ûÒª½«³ýObject¡¡Äܹ»½ÓÊÕµÄÆäËûÈκÎÏûÏ¢·¢³öÈ¥£¬¡¡

Ê×ÏȱØÐë½øÐÐһЩµ÷²éÑо¿£¬ÔÙ½øÐÐÔìÐÍ¡£³ý´ËÒÔÍ⣬Óá¡newInstance£¨£©´´½¨µÄÀà±ØÐëÓÐÒ»¸öĬÈϹ¹½¨Æ÷¡£¡¡

ûÓа취Óá¡newInstance£¨£©´´½¨ÓµÓзÇĬÈϹ¹½¨Æ÷µÄ¶ÔÏó£¬ËùÒÔÔÚJava¡¡1¡£0¡¡ÖпÉÄÜ´æÔÚһЩÏÞÖÆ¡£È»¶ø£¬¡¡

Java¡¡1¡£1¡¡µÄ¡°·´É䡱API¡¡£¨ÏÂÒ»½ÚÌÖÂÛ£©È´ÔÊÐíÎÒÃǶ¯Ì¬µØʹÓÃÀàÀïµÄÈκι¹½¨Æ÷¡£¡¡¡¡

³ÌÐòÖеÄ×îºóÒ»¸ö·½·¨ÊÇprintInfo£¨£©£¬ËüÈ¡µÃÒ»¸öClass¡¡¾ä±ú£¬Í¨¹ý¡¡getName£¨£©»ñµÃËüµÄÃû×Ö£¬²¢Óá¡

interface£¨£©µ÷²éËüÊDz»ÊÇÒ»¸ö½Ó¿Ú¡£¡¡¡¡

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

¡¡¡¡

Class¡¡name£º¡¡FancyToy¡¡is¡¡interface£¿¡¡£§false£§¡¡¡¡

Class¡¡name£º¡¡HasBatteries¡¡is¡¡interface£¿¡¡£§true£§¡¡¡¡

Class¡¡name£º¡¡Waterproof¡¡is¡¡interface£¿¡¡£§true£§¡¡¡¡

Class¡¡name£º¡¡ShootsThings¡¡is¡¡interface£¿¡¡£§true£§¡¡¡¡

Class¡¡name£º¡¡Toy¡¡is¡¡interface£¿¡¡£§false£§¡¡¡¡

¡¡¡¡

ËùÒÔÀûÓÃClass¡¡¶ÔÏó£¬ÎÒÃǼ¸ºõÄܽ«Ò»¸ö¶ÔÏóµÄ×æ×ÚÊ®°Ë´ú¶¼µ÷²é³öÀ´¡£¡¡¡¡



11¡£3¡¡·´É䣺ÔËÐÐÆÚÀàÐÅÏ¢¡¡¡¡



Èç¹û²»ÖªµÀÒ»¸ö¶ÔÏóµÄ׼ȷÀàÐÍ£¬RTTI¡¡»á°ïÖúÎÒÃǵ÷²é¡£µ«È´ÓÐÒ»¸öÏÞÖÆ£ºÀàÐͱØÐëÊÇÔÚ±àÒëÆÚ¼äÒÑÖªµÄ£¬¡¡

·ñÔò¾Í²»ÄÜÓÃRTTI¡¡µ÷²éËü£¬½ø¶øÎÞ·¨Õ¹¿ªÏÂÒ»²½µÄ¹¤×÷¡£»»ÑÔÖ®£¬±àÒëÆ÷±ØÐëÃ÷È·ÖªµÀ¡¡RTTI¡¡Òª´¦ÀíµÄËùÓС¡

Àà¡£¡¡¡¡

´Ó±íÃæ¿´£¬ÕâËƺõ²¢²»ÊÇÒ»¸öºÜ´óµÄÏÞÖÆ£¬µ«¼ÙÈôµÃµ½µÄÊÇÒ»¸ö²»ÔÚ×Ô¼º³ÌÐò¿Õ¼äÄڵĶÔÏóµÄ¾ä±ú£¬ÕâʱÓÖ¡¡

»áÔõÑùÄØ£¿ÊÂʵÉÏ£¬¶ÔÏóµÄÀ༴ʹÔÚ±àÒëÆÚ¼äÒ²²»¿ÉÓÉÎÒÃǵijÌÐòʹÓá£ÀýÈ磬¼ÙÉèÎÒÃÇ´Ó´ÅÅÌ»òÕßÍøÂç»ñ¡¡

µÃһϵÁÐ×Ö½Ú£¬¶øÇÒ±»¸æÖªÄÇЩ×Ö½Ú´ú±íÒ»¸öÀà¡£ÓÉÓÚ±àÒëÆ÷ÔÚ±àÒë´úÂëʱ²¢²»ÖªµÀÄǸöÀàµÄÇé¿ö£¬ËùÒÔÔõ¡¡

Ñù²ÅÄÜ˳ÀûµØʹÓÃÕâ¸öÀàÄØ£¿¡¡¡¡

ÔÚ´«Í³µÄ³ÌÐòÉè¼Æ»·¾³ÖУ¬³öÏÖÕâÖÖÇé¿öµÄ¸ÅÂÊ»òÐíºÜС¡£µ«µ±ÎÒÃÇתÒƵ½Ò»¸ö¹æÄ£¸ü´óµÄ±à³ÌÊÀ½çÖУ¬È´¡¡

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