动态调用的方法:a.getClass().getMethod(str, new Class[]{}).invoke(a, new Object[]{})

其中,a为类的对象,str为要被调用的方法名

1、a.getClass()得到a.class 对象

2、getMethod(str, new Class[]{})得到a对象中名为str的不带参数的方法
如果str方法带参数如str(String s, int i),就要这样写getMethod(str, new Class[]{String.class,int.class})

3、invoke(a,new Object[]{})调用方法,第一个参数是要调用这个方法的对象,如果方法是static的,这个参数可以为null
如果调用有参数的方法str(String s, int i),应该这样写invoke(a,new Object[]{"jimmy", 1})

4. Field[] field = model.getClass().getDeclaredFields();//获取实体类的所有属性,返回Field数组

String name = field[i].getName(); // 获取属性的名字 

 String type = field[i].getGenericType().toString(); // 获取属性的类型 

 Method m = model.getClass().getMethod("get" + UpperCaseField(name)); 

 String value = (String) m.invoke(model); // 调用getter方法获取属性值