自己写的一个beanutil,支持动态调用,主要运用了反射,代码如下
public class BeanUtil {
public static<Bean> void set(Bean bean,String fieldName,Object value)throws Exception{
Class<Bean> c=(Class<Bean>)bean.getClass();
Field field=c.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(bean, value);
}
public static<Bean> Object get(Bean bean,String fieldName)throws Exception{
Class<Bean> c=(Class<Bean>) bean.getClass();
Field field=c.getDeclaredField(fieldName);
field.setAccessible(true);
return field.get(bean);
}
public static<Bean> Object invoke(Bean bean,String methodName,Object[]params)throws Exception{
Class c=bean.getClass();
Class parameterTypes[]=new Class[params.length];
for(int i=0;i<params.length;i++){
parameterTypes[i]=params[i].getClass();
}
Method method=c.getMethod(methodName, parameterTypes);
return method.invoke(bean, params);
}
}