Java·´Éä»úÖÆ Ïê½â »ù±¾¹¦
Ò»°ã¶øÑÔ£¬¿ª·¢ÕßÉçȺ˵µ½¶¯Ì¬ÓïÑÔ£¬´óÖÂÈÏͬµÄÒ»¸ö¶¨ÒåÊÇ£º“³ÌÐòÔËÐÐʱ£¬ÔËÐиıä³ÌÐò½á¹¹»ò±äÁ¿ÀàÐÍ£¬ÕâÖÖÓïÑÔ³ÆÎª¶¯Ì¬ÓïÑÔ”¡£´ÓÕâ¸ö¹Ûµã¿´£¬perl,phthon,rubyÊǶ¯Ì¬ÓïÑÔ£¬C++,JAVA,C#²»ÊǶ¯Ì¬ÓïÑÔ¡£
ÔÚJavaÔËÐÐʱ»·¾³ÖУ¬¶ÔÓÚÈÎÒâÒ»¸öÀ࣬ÄÜ·ñÖªµÀÕâ¸öÀàÓÐÄÄЩÊôÐԺͷ½·¨£¿¶ÔÓÚÈÎÒâÒ»¸ö¶ÔÏó£¬ÄÜ·ñµ÷ÓÃËüµÄÈÎÒâÒ»¸ö·½·¨£¿ ´ð°¸Êǿ϶¨µÄ£¬ÕâÖÖ¶¯Ì¬»ñÈ¡ÀàµÄÐÅÏ¢ÒÔ¼°¶¯Ì¬µ÷ÓöÔÏóµÄ·½·¨µÄ¹¦ÄÜÀ´×ÔÓÚJavaÓïÑԵķ´Éä(Reflection)»úÖÆ¡£
Java·´Éä»úÖÆÖ÷ÒªÌṩÁËÒÔϹ¦ÄÜ£º
ÔÚÔËÐÐʱÅжÏÈÎÒâÒ»¸ö¶ÔÏóËùÊôµÄÀà¡£
ÔÚÔËÐÐʱ¹¹ÔìÈÎÒâÒ»¸öÀàµÄ¶ÔÏó.
ÔÚÔËÐÐʱÅжÏÈÎÒâÒ»¸öÀàËù¾ßÓеijÉÔ±±äÁ¿ºÍ·½·¨¡£
ÔÚÔËÐÐʱµ÷ÓÃÈÎÒâÒ»¸ö¶ÔÏóµÄ·½·¨¡£
reflectionÊÇJava±»ÊÓΪ¶¯Ì¬(»ò×¼¶¯Ì¬)ÓïÑÔµÄÒ»¸ö¹Ø¼üÐÔÖÊ£¬Õâ¸ö»úÖÆÔËÐгÌÐòÔÚÔËÐÐʱ͸¹ýreflection apisÈ¡µÃÈÎÒâÒ»¸öÒÑÖªÃû³ÆµÄclassµÄ
ÄÚ²¿ÐÅÏ¢£¬°üÀ¨Æämodifiers(ÖîÈçpublic,staticµÈµÈ)£¬superclass(ÀýÈçObject)£¬ÊµÏÖÖ®Interface(ÀýÈçserializable),Ò²°üÀ¨fieldsºÍmethodsµÄËùÓÐÐÅÏ¢£¬²¢¿ÉÓÚÔËÐÐʱ¸Ä±äfieldsÄÚÈÝ»òµ÷ÓÃmethods¡£
ÔÚJDKÖУ¬Ö÷ÒªÓÉÒÔÏÂÀàÀ´ÊµÏÖJava·´Éä»úÖÆ£¬ÕâЩÀ඼λÓÚJava.lang.reflect°üÖÐ
ClassÀࣺ´ú±íÒ»¸öÀà
FieldÀࣺ ´ú±íÀàµÄ³ÉÔ±±äÁ¿(³ÉÔ±±äÁ¿Ò²³ÆÎªÀàµÄÊôÐÔ)¡£
MethodÀࣺ ´ú±íÀàµÄ·½·¨¡£
ConstructorÀࣺ ´ú±íÀà¶¼¹¹Ôì·½·¨¡£
ArrayÀࣺ ÌṩÁ˶¯Ì¬´´½¨Êý×飬ÒÔ¼°·ÃÎÊÊý×éµÄÔªËØµÄ¾²Ì¬·½·¨
Àý³ÌDumpMethodsÀàÑÝʾÁËReflectionAPIµÄ»ù±¾×÷Óã¬Ëü¶ÁÈ¡ÃüÁîÐвÎÊýÖ¸¶¨µÄÀàÃû£¬È»ºó´òÓ¡Õâ¸öÀàËù¾ßÓеķ½·¨ÐÅÏ¢¡£
public static void main(String args[]){
Class<?> classType=Class.forName(args[0]);
Method methods[]=classType.getDeclaredMethods();
for(int i=0; i<method.length;i++)
{
System.out.println(methods[i].toString());
}
}
Àý³ÌReflectTesterÀà½øÒ»²½ÑÝʾÁËReflectionAPIµÄ»ù±¾Ê¹Ó÷½·¨¡£ ReflectTesterÀàÓÐÒ»¸öcopy(Object object)·½·¨£¬Õâ¸ö·½·¨Äܹ»´´½¨Ò»¸öºÍ²ÎÊýobjectͬÑùÀàÐ͵ĶÔÏó£¬È»ºó°Ñobject¶ÔÏóÖеÄËùÓÐÊôÐÔ¿½±´µ½Ð½¨µÄ¶ÔÏóÖУ¬²¢½«Ëü·µ»Ø
Õâ¸öÀý×ÓÖ»Äܸ´ÖƼòµ¥µÄJavaBean£¬¼Ù¶¨JavaBea
Ïà¹ØÎĵµ£º
ÈçºÎÓÃJava»ñµÃÒ»¸öÓòÃûµÄIPµØÖ·ÄØ£¿ÌṩÕâ¸ö¹¦ÄܵÄÀà½Ð×öjava.net.InetAddress¡£ÎÒÃǼÙÉèÏÖÔÚÓÐÕâÑùÒ»¸öÓòÃû£¬ËüÓÃÒ»¸ö¾²Ì¬µÄ
getByNameÀ´ÖØÐ»ñµÃÒ»¸öInetAddress£¬È»ºóµÃµ½¿ÉÒÔ¶Á³öµÄIPµØÖ·¡£ÏÂÃæµÄ´úÂëÊǷdz£»ù±¾µÄÃüÁîÐС£
import java.net.InetAddress;
import java.net.Unknow ......
¼×¹ÇÎÄÒѾÍê³ÉÁ˶ÔSUN¹«Ë¾µÄÊÕ¹º£¬ÓÚ1ÔÂ27ÈÕ·¢²¼Á˶ÔSun¸÷ÏîÒµÎñµÄÕûºÏ¹æ»®¡£×ÜÌåÉÏ˵£¬OracleÒª³ÉΪÈíÓ²¼þÒ»Ì廯µÄÕûÌå½â¾ö·½°¸µÄ³§ÉÌ¡£ ÒÔÏÂ¾ÍÆä¶Ô±¸ÊܹØ×¢µÄJava·½ÃæµÄ²ßÂÔ×ö¸ö½éÉÜ¡£
Java SE:
1£©ÍƳöJDK SE 7£¬ Ëü½«°üÀ¨¶à¸öÐµĹ¦ÄÜ£¬ÈçÌá¸ß¿ª·¢ÈËÔ±µÄЧÂÊ£¬Ìṩ¸ßÐÔÄÜ£¬¶Ô¶àºËоƬµÄÖ§³ÖµÈ¡£
2£©SunµÄ ......
ÉùÃ÷£º±¾ÎIJ¢·Ç±¾ÈËËùд£¬ÊÇÍøÉÏ¿´µ½µÄ£¬µ«ÊǸÃÎÄûÓбêÃ÷³ö´¦£¬ËùÒÔ±¾ÈËÒ²²»ÖªµÀ
×÷ΪJava³ÌÐòÔ±À´Ëµ£¬×îÍ´¿àµÄÊÂÇéιýÓÚ¿ÉÒÔÑ¡ÔñµÄ·¶Î§Ì«¹ã£¬¿ÉÒÔ¶ÁµÄÊéÌ«¶à£¬ÍùÍùÈÝÒ×ÎÞËùÊÊ´Ó¡£ÎÒÏë¾ÍÎÒ×Ô¼º¶Á¹ýµÄ¼¼ÊõÊé¼®ÖÐÌôÑ¡³öÀ´Ò»Ð©£¬°´ÕÕѧϰµÄÏȺó˳Ðò£¬ÍƼö¸ø´ó¼Ò£¬ÌرðÊÇÄÇЩÏë²»¶ÏÌá¸ß×Ô¼º¼¼ÊõˮƽµÄJava³ÌÐòÔ±ÃÇ¡£
Ò»¡¢ ......
1. Òì³£»úÖÆ
Òì³£»úÖÆÊÇÖ¸µ±³ÌÐò³öÏÖ´íÎóºó£¬³ÌÐòÈçºÎ´¦Àí¡£¾ßÌåÀ´Ëµ£¬Òì³£»úÖÆÌṩÁ˳ÌÐòÍ˳öµÄ°²È«Í¨µÀ¡£µ±³öÏÖ´íÎóºó£¬³ÌÐòÖ´ÐеÄÁ÷³Ì·¢Éú¸Ä±ä£¬³ÌÐòµÄ¿ØÖÆÈ¨×ªÒƵ½Òì³£´¦ÀíÆ÷¡£
´«Í³µÄ´¦ÀíÒì³£µÄ°ì·¨ÊÇ£¬º¯Êý·µ»ØÒ»¸öÌØÊâµÄ½á¹ûÀ´±íʾ³öÏÖÒì³££¨Í¨³ ......
¹Ø¼ü×Ö£ºthrows,throw,try,catch,finally·Ö±ð´ú±íʲôÒâÒ壿ÔÚtry¿éÖпÉÒÔÅ׳öÒì³£Âð£¿
´ð£ºJavaͨ¹ýÃæÏò¶ÔÏóµÄ·½·¨½øÐÐÒì³£´¦Àí£¬°Ñ¸÷ÖÖ²»Í¬µÄÒì³£½øÐзÖÀ࣬²¢ÌṩÁËÁ¼ºÃµÄ½Ó¿Ú¡£ÔÚJavaÖУ¬Ã¿¸öÒì³£¶¼ÊÇÒ»¸ö¶ÔÏó£¬ËüÊÇThrowableÀà»òÆäËü×ÓÀàµÄʵÀý¡£µ±Ò»¸ö·½·¨³öÏÖÒì³£ºó±ãÅ׳öÒ»¸öÒì³£¶ÔÏ󣬸öÔÏóÖаüº¬ÓÐÒì³£ÐÅÏ¢£¬µ÷ ......