public static void main(String[] args) { Class c; /* 反射获取类的方法 * try { c = Class.forName("com.reflect.Person"); Field[] f = c.getDeclaredFields(); //获取映射类所有字段属性 Method[] m = c.getDeclaredMethods(); //获取映射类的所有方法(继承的方法不会显示) for (int i = 0;i<m.length;i++) { //System.out.println(m[i].getName()+"========="+i); System.out.println(m[i]+"========="+i); //显示映射类的方法信息 } m[4].invoke(c.newInstance(), "aaa"); //调用映射类的方法 } catch (Exception e) { e.printStackTrace(); } */ Person p = new Person("张三",16); Dog d = new Dog("蓝色","汪汪","旺才"); // setObject(p); // System.out.println(p.getName()); getObjectInfo(p); }
/** * 任何对象都可以设定值 */ public static void setObject(Object obj){ //获取所有反射类set方法 try { Class c = obj.getClass(); Field[] f = c.getDeclaredFields(); for(int i = 0;i<f.length;i++) { if(f[i].getName().equals("name")) { Method m = c.getMethod("setName", f[i].getType()); m.invoke(obj, "aaa"); } } } catch (Exception e) { e.printStackTrace(); } }
/** * 显示任何对象所有属性 */ public static void getObjectInfo(Object obj){ //获取所有反射类的get方法 try { Class c = obj.getClass(); Field[] f = c.getDeclaredFields(); for(int i = 0;i<f.length;i++){ String fieldName = f[i].getName(); String name = "get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1,fieldName.length()).toLowerCase(); //System.out.println(name); Method m = c.getMethod(name); System.out.println(m.invoke(obj, null)); }