公司网站进不去qq空间,20m做网站,泰州seo,外贸网站建设便宜今天在工作中遇到一种场景: 一个表格有10个列,要求当点击某列列头时,下拉展示该列的所有数据 解决的常规办法是根据传入的列参数值,判断是哪一列,使用switch()或者if-else判断过滤出哪一列的值 但这个办法太臃肿,如果有100个字段,那这个分支选择就太大了 所以采用反射,你传什么…今天在工作中遇到一种场景: 一个表格有10个列,要求当点击某列列头时,下拉展示该列的所有数据 解决的常规办法是根据传入的列参数值,判断是哪一列,使用switch()或者if-else判断过滤出哪一列的值 但这个办法太臃肿,如果有100个字段,那这个分支选择就太大了 所以采用反射,你传什么列名,我就给你调用什么列字段的get方法,从结果集中过滤出目标列数据 思路: public ListString getColumnList (QueryVO vo){ //首先判断传入的代表列名的colName不能为空,因为为空就无法知道要过滤哪一列的值了 String colName vo.getColName(); if(StringUtil.isNullOrEmpty(colName)){ throw new IsNullException(参数为空!); } //将传入的列名首字母变成大写,便于后续拼接getXxx方法 colName colName.subString(0,1).toUpperCase() colName.subString(1); //查询数据库 ListResultVO users demoDao.findListByVO(vo); //采用反射过滤数据:首先获取列对应的那个get方法,然后反射调用invoke,最后将获得的数据装入新list中,遍历结束后返回结果 ListString list new ArrayListString(); Method method User.class.getMethod(get vo.getColName(), Object.class); for(User user : users){ String value (String)method.invoke(user, new Object()); list.add(value); } return list; } //总结:该案例的本质是通过拼接方法名称来实现对方法的调用,但实现起来却是靠反射. 使用低层方法也许能非常方便的解决一些烦扰的问题转载于:https://www.cnblogs.com/wangxuejian/p/10440651.html