学习一点工具类
来源:互联网 发布:metrics java 编辑:程序博客网 时间:2024/05/22 08:01
org.apache.cxf.common.util.StringUtils
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 blocke.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; }
0 0
- 学习一点工具类
- 学习一点
- 一点Valgrind工具心得
- 每天学习一点,进步一点!
- 工具类的学习
- Java学习工具类
- Guava工具类学习
- 工具类学习
- 英语学习每天一点
- 又学习了一点
- 学习python一点心得
- 学习娱乐一点经验
- jvm 一点学习
- 学习TLD一点心得
- android学习一点day01
- 学习一点东西
- 一点学习的感触
- 集群的一点学习
- 加班那点事(一)
- 山东省第五届ACM省赛题——Colorful Cupcakes(四维dp)
- CF-617E-XOR and Favorite Number(莫队)
- zoj 3946 Highway Project
- DeepID人脸识别算法之三代
- 学习一点工具类
- miui打开高级设置强退
- vim配置
- 制作WebSphere MQ Docker镜像
- ssh实现公钥登陆linux
- Python:渗透测试开源项目【源码值得精读】
- 修改jsp页面标题左边的图标
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- 正则表达式