学习一点工具类
2016-04-25 13:48
225 查看
org.apache.cxf.common.util.StringUtils
在使用list 与arraylist的过程中发现对接口与实例的概念区分不清啊
在Java Web 开发中,我们经常会遇到,从后台获取前台的值,将获取的值通过set方法赋值给实体,然后将实体存入数据库中,有时候对于实体属性多时,代码量很大(其实都是那些set方法),所以针对这点,我们可以通过method反射机制,写个通用的底层方法(对任何实体都有效),这样一来,我们就不用再去一个一个set到实体中去。
Field[] fields = o.getClass().getDeclaredFields(); for (Field field : fields) { String md = "set"+StringUtils.capitalize(field.getName()); try { o.getClass().getMethod(md, field.getType()); } catch (NoSuchMethodException | SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
数组与集合的区别: 一:数组声明了它容纳的元素的类型,而集合不声明。这是由于集合以object形式来存储它们的元素。 二:一个数组实例具有固定的大小,不能伸缩。集合则可根据需要动态改变大小。 三:数组是一种可读/可写数据结构没有办法创建一个只读数组。然而可以使用集合提供的ReadOnly方 只读方式来使用集合。该方法将返回一个集合的只读版本。
在使用list 与arraylist的过程中发现对接口与实例的概念区分不清啊
在Java Web 开发中,我们经常会遇到,从后台获取前台的值,将获取的值通过set方法赋值给实体,然后将实体存入数据库中,有时候对于实体属性多时,代码量很大(其实都是那些set方法),所以针对这点,我们可以通过method反射机制,写个通用的底层方法(对任何实体都有效),这样一来,我们就不用再去一个一个set到实体中去。
public static Object ObjectMethod(Object obj,HttpServletRequest request){ Field[] fields = obj.getClass().getDeclaredFields(); for(Field field:fields){ String md = "set"+StringUtils.capitalize(field.getName()); try { Method method = obj.getClass().getDeclaredMethod(md, field.getType()); if("Java.lang.String".equals(field.getType().getName())){ String value = request.getParameter(field.getName()); method.invoke(obj, value); }else if("java.lang.Integer".equals(field.getType().getName())){ if(!"".equals(request.getParameter(field.getName()))&&request.getParameter(field.getName())!=null){ Integer value = Integer.valueOf(request.getParameter(field.getName())); method.invoke(obj, value); } }else{//这里判断当实体中某个属性为对象类型时,再一次去反射 Class c = Class.forName(field.getType().getName());//获取属性所对应的实体类 Object o =c.newInstance(); //new一个实体类 Field[] fs = o.getClass().getDeclaredFields(); for(Field f : fs){ if(f.getName().endsWith("id")){//需要命名规范 String set = "set"+StringUtils.capitalize(f.getName()); Method m = o.getClass().getDeclaredMethod(set, f.getType()); if("java.lang.Integer".equals(f.getType().getName())){ Integer value = Integer.valueOf(request.getParameter(field.getName())); m.invoke(o, value); method.invoke(obj, o); }else if("java.lang.String".equals(field.getType().getName())){ String value = request.getParameter(field.getName()); m.invoke(o, value); method.invoke(obj, o); }//今后添加基础类型 } } } } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }catch (InstantiationException e) { e.printStackTrace(); } } return obj; }
相关文章推荐
- Eclipse中Git的安装、配置、使用
- NVIDIA Jetson™ TX1
- css奇技淫巧之—多列等高
- C语言do while语句
- 数据库设计三大范式
- DataBinding 坑爹问题集
- 0基础学C#教程3--------winform中的vs工具箱不见了,怎么重新调出来?
- Android Studio系列教程六--Gradle多渠道打包
- H5 页面适配所有 iPhone 和安卓机型的六个技巧
- Linux ftp 用户权限设置
- mysql 中tinytext、text、mediumtext和longtext详解
- Android Studio系列教程四--Gradle基础
- ISO/OSI网络体系结构
- python_笔记2_短路计算(SS)
- JAVA bean与XML互转的利器---XStream
- 179. Largest Number
- js对象中什么是可枚举性(enumerable)?
- php qq第三方登陆
- golang中的类和接口的使用
- 颜色RGB代码