java ·´Éä
Ò»¡¢Ê²Ã´ÊÇ·´É䣺
·´ÉäµÄ¸ÅÄîÊÇÓÉSmithÔÚ1982ÄêÊ×´ÎÌá³öµÄ£¬Ö÷ÒªÊÇÖ¸³ÌÐò¿ÉÒÔ·ÃÎÊ¡¢¼ì²âºÍÐÞ¸ÄËü±¾Éí״̬»òÐÐΪµÄÒ»ÖÖÄÜÁ¦¡£ÕâÒ»¸ÅÄîµÄÌá³öºÜ¿ìÒý·¢Á˼ÆËã»ú¿ÆѧÁìÓò¹ØÓÚÓ¦Ó÷´ÉäÐÔµÄÑо¿¡£ËüÊ×Ïȱ»³ÌÐòÓïÑÔµÄÉè¼ÆÁìÓòËù²ÉÓÃ,²¢ÔÚLispºÍÃæÏò¶ÔÏó·½ÃæÈ¡µÃÁ˳ɼ¨¡£ÆäÖÐLEAD/LEAD++ ¡¢OpenC++ ¡¢MetaXaºÍOpenJavaµÈ¾ÍÊÇ»ùÓÚ·´Éä»úÖƵÄÓïÑÔ¡£×î½ü£¬·´Éä»úÖÆÒ²±»Ó¦Óõ½ÁËÊÓ´°ÏµÍ³¡¢²Ù×÷ϵͳºÍÎļþϵͳÖС£
·´Éä±¾Éí²¢²»ÊÇÒ»¸öиÅÄ¾¡¹Ü¼ÆËã»ú¿Æѧ¸³ÓèÁË·´Éä¸ÅÄîеĺ¬Òå¡£ÔÚ¼ÆËã»ú¿ÆѧÁìÓò£¬·´ÉäÊÇÖ¸Ò»ÀàÓ¦Óã¬ËüÃÇÄܹ»×ÔÃèÊöºÍ×Ô¿ØÖÆ¡£Ò²¾ÍÊÇ˵£¬ÕâÀàÓ¦ÓÃͨ¹ý²ÉÓÃijÖÖ»úÖÆÀ´ÊµÏÖ¶Ô×Ô¼ºÐÐΪµÄÃèÊö£¨self-representation£©ºÍ¼à²â£¨examination£©£¬²¢Äܸù¾Ý×ÔÉíÐÐΪµÄ״̬ºÍ½á¹û£¬µ÷Õû»òÐÞ¸ÄÓ¦ÓÃËùÃèÊöÐÐΪµÄ״̬ºÍÏà¹ØµÄÓïÒå¡£
¶þ¡¢Ê²Ã´ÊÇJavaÖеÄÀà·´É䣺
Reflection ÊÇ Java ³ÌÐò¿ª·¢ÓïÑÔµÄÌØÕ÷Ö®Ò»£¬ËüÔÊÐíÔËÐÐÖÐµÄ Java ³ÌÐò¶Ô×ÔÉí½øÐмì²é£¬»òÕß˵“×ÔÉ󔣬²¢ÄÜÖ±½Ó²Ù×÷³ÌÐòµÄÄÚ²¿ÊôÐԺͷ½·¨¡£Java µÄÕâÒ»ÄÜÁ¦ÔÚʵ¼ÊÓ¦ÓÃÖÐÓõò»ÊǺܶ࣬µ«ÊÇÔÚÆäËüµÄ³ÌÐòÉè¼ÆÓïÑÔÖиù±¾¾Í²»´æÔÚÕâÒ»ÌØÐÔ¡£ÀýÈ磬Pascal¡¢C »òÕß C++ ÖоÍûÓа취ÔÚ³ÌÐòÖлñµÃº¯Êý¶¨ÒåÏà¹ØµÄÐÅÏ¢¡£
Reflection ÊÇ Java ±»ÊÓΪ¶¯Ì¬£¨»ò×¼¶¯Ì¬£©ÓïÑԵĹؼü£¬ÔÊÐí³ÌÐòÓÚÖ´ÐÐÆÚ Reflection APIs È¡µÃÈκÎÒÑÖªÃû³ÆÖ® class µÄ內²¿ÐÅÏ¢£¬°üÀ¨ package¡¢type parameters¡¢superclass¡¢implemented interfaces¡¢inner classes, outer class, fields¡¢constructors¡¢methods¡¢modifiers£¬並¿ÉÓÚÖ´ÐÐÆÚÉú³Éinstances¡¢±ä¸ü fields 內ÈÝ»ò»½Æð methods¡£
Èý¡¢JavaÀà·´ÉäÖÐËù±ØÐëµÄÀࣺ
JavaµÄÀà·´ÉäËùÐèÒªµÄÀಢ²»¶à£¬ËüÃÇ·Ö±ðÊÇ£ºField¡¢Constructor¡¢Method¡¢Class¡¢Object£¬ÏÂÃæÎÒ½«¶ÔÕâЩÀà×öÒ»¸ö¼òµ¥µÄ˵Ã÷¡£
FieldÀࣺÌṩÓйØÀà»ò½Ó¿ÚµÄÊôÐÔµÄÐÅÏ¢£¬ÒÔ¼°¶ÔËüµÄ¶¯Ì¬·ÃÎÊȨÏÞ¡£·´ÉäµÄ×ֶοÉÄÜÊÇÒ»¸öÀࣨ¾²Ì¬£©ÊôÐÔ»òʵÀýÊôÐÔ£¬¼òµ¥µÄÀí½â¿ÉÒÔ°ÑËü¿´³ÉÒ»¸ö·â×°·´ÉäÀàµÄÊôÐÔµÄÀà¡£
ConstructorÀࣺÌṩ¹ØÓÚÀàµÄµ¥¸ö¹¹Ôì·½·¨µÄÐÅÏ¢ÒÔ¼°¶ÔËüµÄ·ÃÎÊȨÏÞ¡£Õâ¸öÀàºÍFieldÀ಻ͬ£¬FieldÀà·â×°ÁË·´ÉäÀàµÄÊôÐÔ£¬¶øConstructorÀàÔò·â×°ÁË·´ÉäÀàµÄ¹¹Ôì·½·¨¡£
MethodÀࣺÌṩ¹ØÓÚÀà»ò½Ó¿ÚÉϵ¥¶Àij¸ö·½·¨µÄÐÅÏ¢¡£
Ïà¹ØÎĵµ£º
Java·ºÐÍ
ÓÉC++µÄÄ£°åº¯ÊýÒýÈë×Ô¶¨Òå·ºÐÍ
ÈçϺ¯ÊýµÄ½á¹¹ºÜÏàËÆ£¬½öÀàÐͲ»Í¬£º
int add(int x, int y) { return x + y;}
float add(float x, float y) { return x + y;}
double add(double x ,double y) {return x + y;}
C++ÓÃÄ£°åº¯Êý½â¾ö£¬Ö»Ð´Ò»¸öͨÓ÷½·¨£¬Ëü¿ÉÒÔÊÊÓ¦¸÷ÖÖÀàÐÍ£¬Ê¾Òâ´úÂëÈçÏ£º
T add(T x, T y) ......
2. ²»Òª×öÖظ´µÄ¹¤×÷¡£
ʹÓó£¼ûµÄ¡¢¾¹ý֤ʵµÄ¿ò¼Ü£¬Èç Apache Struts¡¢JavaServer Faces ºÍ Eclipse RCP¡£Ê¹Óþ¹ý֤ʵµÄģʽ¡£
»Øµ½ÎÒÃÇ¿ªÊ¼°ïÖú¿Í»§Ê¹ÓøճöÏÖµÄ Java EE ±ê×¼µÄʱºò£¬ÎÒÃÇ·¢ÏÖ£¨ºÍÐí¶àÆäËûÈËÒ»Ñù£©£¬Í¨¹ýÖ±½ÓʹÓûù´¡µÄ Servlet ºÍ JSP ¹æ·¶¹¹½¨ UI Ó¦ÓóÌÐòÀ´¿ª·¢Óû§½Ó¿Ú¿ª·¢¿ò¼Ü£¬¿ÉÒÔ¼«´óµØÌḠ......
Java™ÓïÑÔ°üº¬Á½ÖÖÄÚÔÚµÄͬ²½»úÖÆ£ºÍ¬²½¿é£¨»ò·½·¨£©ºÍvolatile±äÁ¿¡£ÕâÁ½ÖÖ»úÖƵÄÌá³ö¶¼ÊÇΪÁËʵÏÖ´úÂëÏ̵߳ݲȫÐÔ¡£ÆäÖÐvolatile±äÁ¿µÄͬ²½ÐԽϲµ«ÓÐʱËü¸ü¼òµ¥²¢ÇÒ¿ªÏú¸üµÍ£©£¬¶øÇÒÆäʹÓÃÒ²¸üÈÝÒ׳ö´í¡£ÔÚÕâÆÚµÄJavaÀíÂÛÓëʵ¼ùÖУ¬Brian Goetz½«½éÉܼ¸ÖÖÕýȷʹÓÃvolatile±äÁ¿µÄģʽ£¬²¢Õë¶ÔÆäÊÊÓÃÐÔÏÞÖÆÌá³öÒ» ......