Java利用反射自动封装成实体对象的方法
作者:shichen2014 发布时间:2022-01-06 05:54:29
标签:Java,封装,方法
本文实例讲述了Java利用反射自动封装成实体对象的方法。分享给大家供大家参考。具体分析如下:
利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递name+rowNo,那么实体对象的属性名应该为name。代码如下
//获取页面数据,自动封装成bean对象
public List getObjectList(Class clazz,String[] rowNos) throws Exception{
List objList = new ArrayList();
for(int i=0;rowNos!=null && i<rowNos.length;i++){
//创建对象实例
Object object = clazz.newInstance();
//获取类声明的属性
Field[] fields = clazz.getDeclaredFields();
StringBuffer buffer = null;
//遍历属性,执行封装
for(int j=0;j<fields.length;j++){
//获取属性的名字
String fieldName = fields[j].getName();
//得到参数的名字
String paraName = fields[j].getName()+rowNos[i];
//如果获取参数值为空则继续循环
String value = getValueNull(paraName);
if(value==null){
continue;
}
//参数值
Object[] paramValue =new Object[1];
if(fields[j].getType().toString().equals("class java.lang.String")){
paramValue[0]=value;
}
if(fields[j].getType().toString().equals("class java.lang.Integer")){
paramValue[0]=new Integer(value);
}
if(fields[j].getType().toString().equals("class java.lang.Double")){
paramValue[0]=new Double(value);
}
if(fields[j].getType().toString().equals("class java.util.Date")){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
paramValue[0]=sdf.parse(value);
}
//参数类型
Class[] paramType= {fields[j].getType()};
//得到set方法的名字
buffer = new StringBuffer("set");
buffer.append(fieldName.substring(0, 1).toUpperCase());
buffer.append(fieldName.substring(1));
//获取放回
Method method = clazz.getDeclaredMethod(buffer.toString(), paramType);
//执行方法
method.invoke(object,paramValue);
}
//将当前对象放到list中
objList.add(object);
}
return objList;
}
希望本文所述对大家的Java程序设计有所帮助。


猜你喜欢
- 本文实例为大家分享了Android实现页面滑动切换动画的具体代码,供大家参考,具体内容如下实现两个页面滑动切换,一些相册的效果也是如此一个A
- 本文实例讲述了C#多线程之Thread中Thread.IsAlive属性用法。分享给大家供大家参考。具体如下:Thread.IsAlive属
- 起因我们先来看一个报错报错很简单,参数 start 没找到。我是在实现一个 API 接口时发现了一个问题,当我不使用 @Param 标签时,
- 1.@Value注解@Value注解的源码,如下所示@Target({ElementType.FIELD, ElementType.METH
- 要说在 Spring Boot 中注册过滤器有三种方式,你都能想到哪些呢?今天松哥就来和大家聊一聊 Spring Boot 中注册过滤器的三
- 我在以前的博客中介绍了如何使用XmlDocument类对XML进行操作,以及如何使用LINQ to XML对XML进行操作。它们分别使用了X
- 介绍什么是ThreadLocal?ThreadLocal叫做线程变量,用于在多线程环境下创建线程本地变量。通俗的讲,ThreadLocal可
- 一、Autowired注解的用法1、概述使用spring开发时,进行配置主要有两种方式,一是xml的方式,二是java config的方式。
- 本文实例为大家分享了Android自定义Seekbar滑动条的具体代码,供大家参考,具体内容如下由于项目需要做出此效果,自定义写了一个。效果
- 上转型对象:子类创建对象 并将这个对象引用赋值给父类的对象。语法格式:Father f=new Son();注意事项:上转型对象是由子类创建
- 一、概念哈希算法(hash algorithm):是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。哈希表(hash
- 1.shiro安全框架Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和session会话管理等功能,
- 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限。 <uses-permission android:na
- 本文实例讲述了Android测量每秒帧数Frames Per Second (FPS)的方法。分享给大家供大家参考。具体如下:MainThr
- 前言这里主要探讨中断常用的三个方法:interrupt()。在一个线程中调用需要中断现成的interrupt()方法,会对该线程发出信号,将
- 开发中需要传递变参,考虑使用 dynamic 还是 Dictionary(准确地说是Dictionary<string,object&
- 本文实例讲述了Java笛卡尔积算法原理与实现方法。分享给大家供大家参考,具体如下:笛卡尔积算法的Java实现:(1)循环内,每次只有一列向下
- 前言今天重新装了IDEA2020,顺带重装了一些插件,毕竟这些插件都是习惯一直在用,其中一款就是Mybatis Log plugin,按照往
- 在算法面试中,面试官总是喜欢围绕链表、排序、二叉树、二分查找来做文章,而大多数人都可以跟着专业的书籍来做到倒背如流。而面试官并不希望招收的是
- 在学会了java中io流的使用后,我们对于数组的排序,又多了一种使用方法。大家知道流处理数据的效率是比较理想的,那么在具体操作数组排序上,很