转自http://www.cnblogs.com/maxblog/archive/2010/09/01/1814816.html
public class FieldTest { private int i = 0; private float f = 0.0f; private boolean b = true; private String s = ""; } public class ReflectTest { public static void main(String[] args) throws Exception { // Point pt1 = new Point(3,5); // Point pt2 = new Point(6,7); // // //得到一个字段 // Field fieldY = pt1.getClass().getField("y"); //y 是变量名 // System.out.println(fieldY.get(pt1)); //这才是5 // System.out.println(fieldY.get(pt1)); //这才是5 // // //暴力反射 // Field fieldX = pt1.getClass().getDeclaredField("x"); //这个管你公的私的,都拿来 // fieldX.setAccessible(true);//上面的代码已经看见钱了,开始抢了 // System.out.println(fieldX.get(pt1)); // Field[] declaredFields = pt1.getClass().getDeclaredFields(); // System.out.println(declaredFields.length); /** * ===================================================================== */ 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; // field.setAccessible(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()方法."); field.setAccessible(true); isTurn = true; } } System.out.println("**************"); } } }