Java·´ÉäÖ®Methodµ÷ÓúÍFiledÉèÖÃ
·´ÉäÊÇjavaµÄÒ»¸ö¸ß¼¶ÌØÐÔ¡£
Reflection ÊÇJava±»ÊÓΪ¶¯Ì¬£¨»ò×¼¶¯Ì¬£©ÓïÑÔµÄÒ»¸ö¹Ø¼üÐÔÖÊ¡£Õâ¸ö»úÖÆÔÊÐí³ÌÐòÔÚÔËÐÐʱ͸¹ýReflection APIsÈ¡µÃÈκÎÒ»¸öÒÑÖªÃû³ÆµÄclassµÄÄÚ²¿ÐÅÏ¢£¬°üÀ¨Æämodifiers£¨ÖîÈçpublic, static µÈµÈ£©¡¢superclass£¨ÀýÈçObject£©¡¢ÊµÏÖÖ®interfaces£¨ÀýÈçSerializable£©£¬Ò²°üÀ¨fieldsºÍmethods µÄËùÓÐÐÅÏ¢£¬²¢¿ÉÓÚÔËÐÐʱ¸Ä±äfieldsÄÚÈÝ»òµ÷ÓÃmethods¡£
·´Éä¾ÍÊǸøÓ¦ÓóÌÐòÒ»¸ö¿ÉÒÔ¼ì²é×Ô¼ººÍÔËÐл·¾³µÄÒ»¸ö·¾¶¡£×Ô¼ºÐÅÏ¢µÄÌæ´ú—MetaData.
ÈëÃż¶±ðÏÈ¿´¿´Èç¹ûͨ¹ý·´Éäµ÷Ó÷½·¨ºÍÉèÖóÉÔ±±äÁ¿µÄÖµ£º
1.ͨ¹ý·´ÉäÉèÖñäÁ¿Öµ
import java.lang.reflect.Field;
/**
* ·´ÉäÐÞ¸ÄField
*
* @author yblin
*/
public class RefField {
public String color;
public Double number;
public static void main(String args[]) {
try {
Class c = RefField.class;
Field colorField;
colorField = c.getField("color");
Field numberField = c.getField("number");
RefField obj = new RefField();
colorField.set(obj, "blue");
System.out.println("color=" + colorField.get(obj));
numberField.set(obj, 2.1);
System.out.println("number=" + numberField.get(obj));
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.µ÷Ó÷´Éäµ÷Ó÷½·¨
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* ·´Éä·½·¨µ÷Óá£
*
* @author yblin
*/
public class RefMethod {
private String color;
public void printColor() {
Ïà¹ØÎĵµ£º
¿ª·¢ÕßÓÐʱ´´½¨µÄ¶àÏ̳߳ÌÐò»áÉú³É´íÎóÖµ»ò²úÉúÆäËüÆæ¹ÖµÄÐÐΪ¡£¹Å¹ÖÐÐΪһ°ã³öÏÖÔÚÒ»¸ö¶àÏ̳߳ÌÐòûʹÓÃͬ²½Á¬ÔØÏ̷߳ÃÎʹؼü´úÂ벿·ÝµÄʱºò¡£Í¬²½Á¬ÔØÏ̷߳ÃÎʹؼü´úÂ벿·ÝÊÇʲôÒâË¼ÄØ£¿ÔÚÕâÆªÎÄÕÂÖнâÊÍÁËͬ²½£¬JavaµÄͬ²½»úÖÆ£¬ÒÔ¼°µ±¿ª·¢ÕßûÓÐÕýȷʹÓÃÕâ¸ö»úÖÆÊ±³öÏÖµÄÁ½¸öÎÊÌâ¡£Ò»µ©Äã¿´ÍêÕâÆªÎÄÕ£¬Äã¾Í¿ÉÒÔ±ÜÃâÔÚ ......
Ò»¸öºÃµÄ³ÌÐòÔ±³ýÁ˾߱¸ÔúʵµÄ»ù±¾¹¦Í⣬»¹Ó¦¸Ã¾ßÓиüΪÁé»îµÄÂ߼˼άÓëÅжÏÄÜÁ¦¡£³ý´ËÖ®Í⣬³ÅÎÕһЩÐÐÖ®ÓÐЧµÄ¸¨Öú¹¤¾ßÒ²ºÜÖØÒª¡£¹¤ÓûÉÆÆäÊÂ,±ØÏÈÀûÆäÆ÷¡£ÓкõŤ¾ß¸¨Öú£¬Ëù×öµÄ¹¤×÷½«Ê°빦±¶¡£ÏÂÃæÏò´ó¼ÒÍÆ¼ö»ùÓÚWEBÓ¦Óÿª·¢µÄjava³ÌÐòÔ±Ó¦¸Ã±Ø±¸µÄ¸¨Öú¿ª·¢¹¤¾ß¡£
¡¡¡¡1£¬JavaÆÊÎö¹¤¾ß¡¡--¡¡profiler
¡¡¡¡ÊÇÒ»¸öÈ«¹ ......
¿ÉÒÔ˵´úÀíÊÇjavaÊ®·ÖÖØÒªµÄÒ»ÖÖ»úÖÆ£¬ÁíÒ»¸öµ±È»ÊÇÊôÓÚ·´ÉäÁË£¬jdkÖе¥¶À½²µ½ÁË·´ÉäAPI£¨java.lang.reflect£©£¬¿ÉÄÜÓÐÈËÈÏΪ·´Éä¶Ô×ÊÔ´ÏûºÄ±È½ÏÀ÷º¦£¬È·ÊµÒ²ÊÇ£¬·´Éä¿Ï¶¨ÊÇÒªÏûºÄ×ÊÔ´µÄ£¬µ«Ò²²»ÊÇʲô¶¼ÒªÓõ½·´É䣬ËùÒÔ×î¼ÑÊÔÑéÓ¦¸ÃÊÇÔÚ×ÊÔ´ÏûºÄ³Ì¶ÈºÍ·´ÉäµÄʹÓó̶ÈÖ®¼äÕÒµ½Ò»¸öƽºâµã£¬±¾ÎIJ¢²»´òËã½²·´É䣬¹ØÓÚ·´ÉäµÄÐ ......
²»¹ÜÎÒÊǶàôϲ»¶JAVAµ«ÊÇ£¬´Óʵ¼Ê¿ª·¢½Ç¶È½²£¬JavaµÄ¶àÏß³ÌȷʵûÓÐC++ºÃʹ¡£
±íÏÖÔÚ£º
1.JavaûÓÐÈ«¾Ö±äÁ¿£»
2.Java µÄÏß³ÌÖ®¼äµÄͨÐűȽϲC++ÌṩÁ˶àÖÖͨÐÅ·½Ê½£»
3.JavaµÄÊý¾Ýͬ²½ÊÇͨ¹ýsynchronizedÀ´ÊµÏÖ£¬µ«ÊÇ»ù±¾ÉϵÈÓÚ½»¸øÁËÐéÄâ»úÀ´Íê³É£¬¶øC++ÓкܶàÖÖ£ºÁÙ½çÇø¡¢»¥³âÌåµÈ¡£
4. JavaµÄ¶àÏß³Ìrun·½· ......