没太çè§£ä½ è¦æ±ç å®ç°ä½ä¸è¬è¿ç§å¨æè·åç±»ä¿¡æ¯ å¨javaä¸é½æ¯éç¥åå°æºå¶å®ç°ç
Javaçåå°APIï¼Reflection APIï¼
Classç±»:è¦æ£ç¡®ä½¿ç¨Javaåå°æºå¶å°±å¾ä½¿ç¨java.lang.Classè¿ä¸ªç±»ãå®æ¯Javaåå°æºå¶çèµ·æºãå½ä¸ä¸ªç±»è¢«å 载以åï¼Javaèææºå°±ä¼èªå¨äº§çä¸ä¸ªClass对象ãéè¿è¿ä¸ª
Class对象æ们就è½è·å¾å è½½å°èææºå½ä¸è¿ä¸ªClass对象对åºçæ¹æ³ãæå以åæé æ¹æ³ç声æåå®ä¹çä¿¡æ¯ã
åå°APIç¨äºååºå¨å½åJavaèææºä¸çç±»ãæ¥å£æè
对象信æ¯
åè½:ï¼Object object = new Object(),ä¸é¢ä»¥å¯¹è±¡objectè¿è¡è¯´æï¼
1) è·åç±»çClass对象
å¦æå¨è¿è¡æ¶ä¸ä¸ªç±»çå®ä¾å·²ç»å¾å°ï¼ä½ å¯ä»¥ä½¿ç¨
Class c = 对象å.getClass();ä¾ï¼ Class c = object.getClass();Class s = object.getSuperclass();
å¦æä½ å¨ç¼è¯æç¥éç±»çååï¼ä½ å¯ä»¥ä½¿ç¨å¦ä¸çæ¹æ³Class c =java. awt. Button.class; æè
Class c = Integer.TYPE;
å¦æç±»åå¨ç¼è¯æä¸ç¥é, ä½æ¯å¨è¿è¡æå¯ä»¥è·å¾, ä½ å¯ä»¥ä½¿ç¨ä¸é¢çæ¹æ³Class c = Class.forName(âç±»çå
¨è·¯å¾â);
2) è·åç±»çFields ï¼å¯¹Fieldè¿è¡èµå¼
Field[] fus = object.getClass().getDeclaredField();
Field fu = object.getClass().getDeclaredField(fieldName);//è·å对象objectçå称为fieldNameçå±æ§åã
fu.setAccessible(true) ;//设置å±æ§åç访é®å±æ§
fu.set(object,val); //设置object对象çå±æ§å¼
3) è·åç±»çMethod
Method[] ms= object.getClass().getDeclaredMethods()
4) è·åç±»çConstructor
5) æ°å»ºç±»çå®ä¾
(A)éè¿Class<T>çå½æ°newInstance
(B)éè¿Constructor对象çæ¹æ³newInstance.