- package cn.itcast.reflect;
- import java.lang.reflect.*;
- import java.util.Arrays;
- public class ReflectTest
- {
- public static void main(String[] args) throws Exception
- {
- Person p = new Person("张三",12);
- getObject(p);
- }
- //通过反射获得属性对应的get方法,传入对象,即可打印出所有属性对应的值。
- public static void getObject(Object object)
- {
- try
- {
- //获取传进来的映射对象
- Class c = object.getClass();
- //取得对象的所有属性,放到一个数组中
- Field[] f = c.getDeclaredFields();
- for(int i = 0; i<f.length; i++)
- {
- //获取对象的属性
- String fieldName = f[i].getName();
- //拼接出来访问器名字
- String name = "get"+firUpCase(fieldName);
- //System.out.println(name);
- //获取名字是name的方法。
- Method m = c.getMethod(name);
- //映射后的对象的方法 对象调用invoke()方法,实现它在原对象中对应的方法,这里实现的是get方法。
- System.out.println(m.invoke(object));
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
- public static String firUpCase(String fieldName)
- {
- String changed = null;
- int temp = 0;
- char [] fn = fieldName.toCharArray();
- temp = (int)fn[0]-32;
- if(temp>64&&temp<91)
- {
-
- fn[0] = (char)temp;
- }
- changed = new String(fn);
- return changed;
- }
- }
复制代码 |