介绍
这篇文章将为大家详细讲解有关Java通过反射给实体类赋值的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
表单提交这个方法是挺方便的,但在Java来说就显得有些麻烦了,
怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量就多了起来,其代码量不说,维护也是一个问题。
所以就有了这样一个类,只需把请求和实体类对象传进去就行了,
这样就会得到一个有值的实体类对象
下面是代码示例
进口java.lang.reflect.Field; 进口java.lang.reflect.Method; 进口java.sql.Date; 进口java.sql.Timestamp; 进口java.text.SimpleDateFormat; 进口javax.servlet.http.HttpServletRequest; 公开课RequestHelper {/* * *把请求请求的数据放到java对象中 */公共静态& lt; T>T getSingleRequest (HttpServletRequest请求,Classobj) {//创建实例 T实例=零; 尝试{//获取类中声明的所有字段 ?[]字段obj.getDeclaredFields ();//创建新的实例对象 实例=obj.newInstance ();//利用循环 for (int i=0;我& lt;fields.length;我+ +){//获取字段的名称 字符串名称=字段[我]. getname ();//把序列化id筛选掉 如果(name.equals (“serialVersionUID")) { 继续; }//获取字段的类型 Class<及# 63;比;类型=obj.getDeclaredField(名字). gettype ();//首字母大写 字符串替换=名字。substring (0, 1) .toUpperCase () + name.substring (1);//获得setter方法 方法setMethod=obj.getMethod (“set"+取代类型);//获取到形式表单的所有值 字符串str=request.getParameter(取代); 如果(str==null | |““.equals (str)) {//首字母小写 字符串?名字。substring (0, 1) .toLowerCase () + name.substring (1); str=request.getParameter(小); }//通过setter方法赋值给对应的成员变量 如果(str !=零,,!““.equals (str)) {//- - -判断读取数据的类型 如果(type.isAssignableFrom (String.class)) { setMethod。调用(例如,str); }else if (type.isAssignableFrom (int.class) | | type.isAssignableFrom (Integer.class)) { setMethod。调用(例如,Integer.parseInt (str)); }else if (type.isAssignableFrom (Double.class) | | type.isAssignableFrom (double.class)) { setMethod。调用(例如,Double.parseDouble (str)); }else if (type.isAssignableFrom (Boolean.class) | | type.isAssignableFrom (boolean.class)) { setMethod。调用(例如,Boolean.parseBoolean (str)); }else if (type.isAssignableFrom (Date.class)) { SimpleDateFormat dateFormat=new SimpleDateFormat (“yyyy-MM-dd"); setMethod。调用(例如,dateFormat.parse (str)); }else if (type.isAssignableFrom (Timestamp.class)) { SimpleDateFormat dateFormat=new SimpleDateFormat (“yyyy-MM-dd HH: mm: ss"); setMethod。调用(例如,新的时间戳(dateFormat.parse (str) .getTime ())); } } } }捕捉(异常e) {//TODO:处理异常 e.printStackTrace (); }//返回实体类对象 返回实例; } }
<强> java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~ ~ ~ 强>
项目中需要过滤前面表单页面中传过来的实体类的中类的字符串型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益。于是,哈哈哈
公共静态& lt; T>空白modelTrim (T模型){ Classclazz=(Class Java通过反射给实体类赋值的案例分析