標籤:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->import java.lang.reflect.Field;public class FieldTest { int i; public float f; protected boolean b; private String s; public FieldTest() { i=0; f=0.0f; b = true; s = ""; } public static void main(String[] args){ //進行類執行個體化: FieldTest fieldTest = new FieldTest(); //擷取類的域 Field[] declaredFields = FieldTest.class.getDeclaredFields(); for(int i=0;i<declaredFields.length;i++){ Field field = declaredFields[i]; System.out.println("名稱為:"+field.getName()); Class fieldType = field.getType(); System.out.println("類型為:"+field.getType()); boolean isTurn = true; while(isTurn) { try{ isTurn = false; System.out.println("修改前的值為:"+ field.get(fieldTest)); if(fieldType.equals(int.class)) { System.out.println("利用setInt()方法修改成員變數的值."); field.setInt(fieldTest, 124); } else if(fieldType.equals(float.class)) { System.out.println("利用setFloat()方法修改成員變數的值."); field.setFloat(fieldTest, 9.9f); }else if(fieldType.equals(boolean.class)) { System.out.println("利用setBoolean()方法修改成員變數的值."); field.setBoolean(fieldTest, false); } else { System.out.println("利用set()方法修改成員變數的值."); field.set(fieldTest, "NWQ"); } System.out.println("修改後的值為:"+field.get(fieldTest)); }catch(Exception e) { System.out.println("在設定成員變數時發生異常,執行setAccessible()方法."); //修改可訪問性,如果為true,當前域的所有成員都可以訪問 field.setAccessible(true); isTurn = true; } } System.out.println("**************"); } }}
Java Field 反射機制的簡單使用