通过java反射,封装bean
上周有一个封装javabean的流程,成员变量有好多,一路写if(!=null){setXXX} 真的好麻烦,有时候一不小心还会漏掉,很是麻烦,就想到用反射的方法自动进行拼装bean。
bean
- package com.jiaotd.reflect;
- /**
- * @author jiaotd@asiainfo.com
- * @since 2016年3月14日 上午9:12:47
- */
- public class NewCustInfo {
- public String dataId;
- public String custId;
- public String provCode;
- public String regionId;
- public String billId;
- public String custName;
- public String custCertType;
- public String custCertNo;
- public String custCertAddr;
- public String certValiddate;
- public String certExpdate;
- public String gender;
- public String nation;
- public String birthday;
- public String linkaddr;
- public String linkman;
- public String linkphone;
- public String issuingAuthority;
- public String fistGetDate;
- public String validduration;
- public String archiveNo;
- public String state;
- public String createDate;
- public String authType;
- public String notes;
- public String ext1;
- public String ext2;
- public String ext3;
- public String ext4;
- public String ext5;
- public String ext6;
- public String ext7;
- public String ext8;
- public String ext9;
- public String ext10;
- public NewCustInfo() {
- }
- public String getDataId() {
- return dataId;
- }
- public void setDataId(String dataId) {
- this.dataId = dataId;
- }
- public String getCustId() {
- return custId;
- }
- public void setCustId(String custId) {
- this.custId = custId;
- }
- public String getProvCode() {
- return provCode;
- }
- public void setProvCode(String provCode) {
- this.provCode = provCode;
- }
- public String getRegionId() {
- return regionId;
- }
- public void setRegionId(String regionId) {
- this.regionId = regionId;
- }
- public String getBillId() {
- return billId;
- }
- public void setBillId(String billId) {
- this.billId = billId;
- }
- public String getCustName() {
- return custName;
- }
- public void setCustName(String custName) {
- this.custName = custName;
- }
- public String getCustCertType() {
- return custCertType;
- }
- public void setCustCertType(String custCertType) {
- this.custCertType = custCertType;
- }
- public String getCustCertNo() {
- return custCertNo;
- }
- public void setCustCertNo(String custCertNo) {
- this.custCertNo = custCertNo;
- }
- public String getCustCertAddr() {
- return custCertAddr;
- }
- public void setCustCertAddr(String custCertAddr) {
- this.custCertAddr = custCertAddr;
- }
- public String getCertValiddate() {
- return certValiddate;
- }
- public void setCertValiddate(String certValiddate) {
- this.certValiddate = certValiddate;
- }
- public String getCertExpdate() {
- return certExpdate;
- }
- public void setCertExpdate(String certExpdate) {
- this.certExpdate = certExpdate;
- }
- public String getGender() {
- return gender;
- }
- public void setGender(String gender) {
- this.gender = gender;
- }
- public String getNation() {
- return nation;
- }
- public void setNation(String nation) {
- this.nation = nation;
- }
- public String getBirthday() {
- return birthday;
- }
- public void setBirthday(String birthday) {
- this.birthday = birthday;
- }
- public String getLinkaddr() {
- return linkaddr;
- }
- public void setLinkaddr(String linkaddr) {
- this.linkaddr = linkaddr;
- }
- public String getLinkman() {
- return linkman;
- }
- public void setLinkman(String linkman) {
- this.linkman = linkman;
- }
- public String getLinkphone() {
- return linkphone;
- }
- public void setLinkphone(String linkphone) {
- this.linkphone = linkphone;
- }
- public String getIssuingAuthority() {
- return issuingAuthority;
- }
- public void setIssuingAuthority(String issuingAuthority) {
- this.issuingAuthority = issuingAuthority;
- }
- public String getFistGetDate() {
- return fistGetDate;
- }
- public void setFistGetDate(String fistGetDate) {
- this.fistGetDate = fistGetDate;
- }
- public String getValidduration() {
- return validduration;
- }
- public void setValidduration(String validduration) {
- this.validduration = validduration;
- }
- public String getArchiveNo() {
- return archiveNo;
- }
- public void setArchiveNo(String archiveNo) {
- this.archiveNo = archiveNo;
- }
- public String getState() {
- return state;
- }
- public void setState(String state) {
- this.state = state;
- }
- public String getCreateDate() {
- return createDate;
- }
- public void setCreateDate(String createDate) {
- this.createDate = createDate;
- }
- public String getAuthType() {
- return authType;
- }
- public void setAuthType(String authType) {
- this.authType = authType;
- }
- public String getNotes() {
- return notes;
- }
- public void setNotes(String notes) {
- this.notes = notes;
- }
- public String getExt1() {
- return ext1;
- }
- public void setExt1(String ext1) {
- this.ext1 = ext1;
- }
- public String getExt2() {
- return ext2;
- }
- public void setExt2(String ext2) {
- this.ext2 = ext2;
- }
- public String getExt3() {
- return ext3;
- }
- public void setExt3(String ext3) {
- this.ext3 = ext3;
- }
- public String getExt4() {
- return ext4;
- }
- public void setExt4(String ext4) {
- this.ext4 = ext4;
- }
- public String getExt5() {
- return ext5;
- }
- public void setExt5(String ext5) {
- this.ext5 = ext5;
- }
- public String getExt6() {
- return ext6;
- }
- public void setExt6(String ext6) {
- this.ext6 = ext6;
- }
- public String getExt7() {
- return ext7;
- }
- public void setExt7(String ext7) {
- this.ext7 = ext7;
- }
- public String getExt8() {
- return ext8;
- }
- public void setExt8(String ext8) {
- this.ext8 = ext8;
- }
- public String getExt9() {
- return ext9;
- }
- public void setExt9(String ext9) {
- this.ext9 = ext9;
- }
- public String getExt10() {
- return ext10;
- }
- public void setExt10(String ext10) {
- this.ext10 = ext10;
- }
- @Override
- public String toString() {
- return "NewCustInfo [dataId=" + dataId + ", custId=" + custId
- + ", provCode=" + provCode + ", regionId=" + regionId
- + ", billId=" + billId + ", custName=" + custName
- + ", custCertType=" + custCertType + ", custCertNo="
- + custCertNo + ", custCertAddr=" + custCertAddr
- + ", certValiddate=" + certValiddate + ", certExpdate="
- + certExpdate + ", gender=" + gender + ", nation=" + nation
- + ", birthday=" + birthday + ", linkaddr=" + linkaddr
- + ", linkman=" + linkman + ", linkphone=" + linkphone
- + ", issuingAuthority=" + issuingAuthority + ", fistGetDate="
- + fistGetDate + ", validduration=" + validduration
- + ", archiveNo=" + archiveNo + ", state=" + state
- + ", createDate=" + createDate + ", authType=" + authType
- + ", notes=" + notes + ", ext1=" + ext1 + ", ext2=" + ext2
- + ", ext3=" + ext3 + ", ext4=" + ext4 + ", ext5=" + ext5
- + ", ext6=" + ext6 + ", ext7=" + ext7 + ", ext8=" + ext8
- + ", ext9=" + ext9 + ", ext10=" + ext10 + "]";
- }
- }
具体方法
需要注意的是
Method method = clazz.getMethod(key, String.class);
第一个参数是方法名,第二参数是一个多参数,即给方法需要的所有参数的类型。
本bean对象都是String类型的,所以可以这写,其余情景可以自行变形。
传入你要分装的bean对象和值
method.invoke(newcustinfo,map.get(s));
- package com.jiaotd.reflect;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * @since 2016年3月14日 上午9:01:41
- */
- public class CreateBean {
- public static List<String> paramBodyKey = new ArrayList<String>();
- static {
- paramBodyKey.add("dataId");
- paramBodyKey.add("custId");
- paramBodyKey.add("provCode");
- paramBodyKey.add("regionId");
- paramBodyKey.add("billId");
- paramBodyKey.add("custName");
- paramBodyKey.add("custCertType");
- paramBodyKey.add("custCertNo");
- paramBodyKey.add("custCertAddr");
- paramBodyKey.add("certValiddate");
- paramBodyKey.add("certExpdate");
- paramBodyKey.add("gender");
- paramBodyKey.add("nation");
- paramBodyKey.add("birthday");
- paramBodyKey.add("linkaddr");
- paramBodyKey.add("linkman");
- paramBodyKey.add("linkphone");
- paramBodyKey.add("issuingAuthority");
- paramBodyKey.add("fistGetDate");
- paramBodyKey.add("validduration");
- paramBodyKey.add("archiveNo");
- paramBodyKey.add("state");
- paramBodyKey.add("createDate");
- paramBodyKey.add("authType");
- paramBodyKey.add("notes");
- paramBodyKey.add("ext1");
- paramBodyKey.add("ext2");
- paramBodyKey.add("ext3");
- paramBodyKey.add("ext4");
- paramBodyKey.add("ext5");
- paramBodyKey.add("ext6");
- paramBodyKey.add("ext7");
- paramBodyKey.add("ext8");
- paramBodyKey.add("ext9");
- paramBodyKey.add("ext10");
- }
- public static Map<String, String> padBean(String str){
- Map<String, String> map = new HashMap<String,String>();
- String[] strs = str.split("\\|");
- for(int i=0;i<strs.length;i++){
- String key = paramBodyKey.get(i);
- String value = strs[i];
- map.put(key, value);
- }
- return map;
- }
- public static NewCustInfo getbean(Map<String, String> map){
- NewCustInfo newcustinfo = new NewCustInfo();
- Class clazz = NewCustInfo.class;
- for(String s : map.keySet()){
- String key ="set" + s.substring(0, 1).toUpperCase()+s.substring(1, s.length());
- try {
- Method method = clazz.getMethod(key, String.class);
- method.invoke(newcustinfo,map.get(s));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return newcustinfo;
- }
- public static void main(String[] args) {
- String str = "||XX|||XX|XX|XX|XX||XX|XX|XXX||||XX|||||XX||XX||XX|XX|XX|XX|XX|XX||XX|XX|";
- Map<String, String> map = padBean(str);
- System.out.println(getbean(map));
- }
- }
通过java反射,封装bean的更多相关文章
- Java反射之Bean修改更新属性值等工具类
package com.bocean.util; import java.lang.annotation.Annotation; import java.lang.reflect.Field; imp ...
- 不使用BeanUtils,利用Java反射机制:表单数据自动封装到JavaBean
在百度搜“java反射 将表单数据自动封装到javabean ”,第一页显示的都是一样的代码,都是利用导入第三方jar包<commons-beanutils>和<commons-lo ...
- 利用java反射将结果集封装成为对象和对象集合
java反射机制是什么 反射机制是在运行状态中,可以知道任何一个类的属性和方法,并且调用类的属性和方法: 反射机制能够做什么 1.判断运行对象的所属类 2.构造任意一个类的对象 3.获取任意一个类的属 ...
- 利用Java反射机制将Bean转成Map
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- java 反射,注解,泛型,内省(高级知识点)
Java反射 1.Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs 取得任何一个已知名称的class的内部信息, 包括 ...
- Java反射机制(Reflect)解析
一.导读 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计 ...
- JAVA反射机制及理解
JAVA反射 往往当我们面对一项新的知识时,我们往往需要知道三个方面,它是什么,它能做什么,它比原有知识强在哪里,我们该怎么使用它.当你能够解决这些问题时,便意味着你已经对这项知识入门了. 首先: 反 ...
- JavaSE学习总结(十五)—— Java反射与注解
一.静态语言与动态语言 静态类型语言:是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求.强类型 动态 ...
- Java反射初探 ——“当类也学会照镜子”
反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解哈) 我理解的java反射机制就是: 提供一套完善而强大的 ...
- java反射知识点总结
一.java反射基础 1.1 什么叫java反射? 答:程序运行期间,动态的获取类的基本信息.比如:创建对象,调用类的方法,获得类的基本结构.这样给程序设计提供了很大的灵活性.个人总结就是:根据动态需 ...
随机推荐
- 1.15 kickstart rpm yum
###########bootstrap 启动加载器 (pxelinux.0)传输pxelinux.cfg NIC #network interface PXEpxelinux.0/tftp/pxel ...
- floyd算法
求两个顶点间的最短距离,直觉是这样的问题可以用尝试和枚举的办法来求解,这显然可行,但是我们可以换个方式来看待这个问题,比如, 可以这样描述,“在给定的点集(编号为1~k,k=图中所有的顶点数量)中,i ...
- Qt QAxObject操作excel文件过程总结(转):
正好同事问道Qt下操作excel. 转自:http://blog.csdn.net/a156392343/article/details/48092515 配制方面: 1.确保Excel软件在本地服务 ...
- python命令行解释器 argparse
一: argparse介绍 1. argparse argparse,它是Python标准库中推荐使用的编写命令行程序的工具 parser = argparse.ArgumentParser() ...
- 10天学会phpWeChat——第一天:核心框架的目录结构
phpWeCaht是一款优秀的PC网站+微信公共号开发框架. 本博客系列将图文结合,详细介绍phpWeChat 的使用方法,今天进入phpWeChat系列教程之<10天学会phpWeChat&g ...
- visual studio code
偏好设置: "editor.fontSize": 26, "editor.tabSize": 8, "editor.mouseWheelZoom&qu ...
- 拜拜了,浮动布局-基于display:inline-block的列表布局
原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]本文地址:http://www.zhangxinxu.com/wordpress/?p=1194
- [PHP] - Laravel 5 的 Hello Wold
吐槽一段 整了半天,Laravel下载麻烦得可以去死.先要安装composer,而composer又被共墙了,之后又要安装git,安装完git还要注册git,等等.... 最终放弃这种玩法,太恶心了. ...
- Android 自定义事件监听器
当我们自定义View的时候,如果需要返回值,那么就需要自定义一个监听器. 这里用一个自定义的数字选框为例. 首先定义view. 1.新建view,NumberKeyboardView.Java,自定义 ...
- 【python】遍历类的所有成员
# -*- coding: utf-8 -*- #sharejs.com提供代码,转载请注明出处 class Site(object): def __init__(self): self.title ...