通过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反射? 答:程序运行期间,动态的获取类的基本信息.比如:创建对象,调用类的方法,获得类的基本结构.这样给程序设计提供了很大的灵活性.个人总结就是:根据动态需 ...
随机推荐
- [课程设计]Scrum 1.1 NABCD模型&产品Backlog
多鱼点餐系统WEB NABCD模型 & 产品Backlog ● 一.NABCD模型 1) N (Need 需求) 为了解决餐饮企业在同行中的竞争优势,减少顾客到店后的点餐.等餐及结算过程消耗 ...
- winform中button的image属性无法更改
在开发一个winform程序的时候,界面中的button的image本来有一个贴图A.后来我觉得不合适,打算换成贴图B. 但是这时问题出现了:虽然我改成了贴图B,在IDE中的预览也是贴图B,但是每次编 ...
- 在asp.net中显示PDF的方法:
来源:http://www.cnblogs.com/tengs2000/archive/2009/02/23/1396646.html 一.直接显示,使用的还是原页面的URL Response.Con ...
- solr6.0.0 + tomcat8 配置问题
中间件需求: apache-tomcat-8.0.32.tar.gz jdk-8u74-linux-x64.rpm solr-6.0.0.zip 0.安装java JDK rpm -ivh jdk-8 ...
- 打开页面自动打开QQ的javascript代码
今天浏览个网站,发现我的QQ突然自动启动了,起初还以为中病毒了,后来找了半天无果,反而发现了几个无需启动的系统服务进程,遂管之. 后来打开网站的页面的源代码,发现一段javascript脚本,才知道我 ...
- DELPHI 各版本下载
各版本中国下载地址: http://pan.baidu.com/s/1eQ1QGy2 http://pan.baidu.com/s/1qWK3mw8 (有新版本发布时,会同步最新官网地址) ───── ...
- jersy服务,将图片发送另个服务器,再将异步返回
今天在学习新项目时,遇到了jersy服务,完成,将图片发送到另一台服务器.下面介绍一下jersy服务的一个简单例子. 1.建立一个jersy一个java项目,先导入jersy服务相应的jar包 com ...
- css 文本显示点点点
今天有这个需求,百度获取到这个效果,记录下来. text-overflow :ellipsis; //让截断的文字显示为点点.还有一个值是clip意思是截断不显示点点 white-space : no ...
- ecmobile中IOS版本中界面文字不显示的解决
查找以下方法. - (BOOL)setCurrentLanguageName:(NSString *)name{ BeeLanguage * lang = [self findLangu ...
- 基于Cloud Foundry平台部署nodejs项目上线
Cloud Foundry(以下简称CF),CF是Vmware公司的PaaS服务平台,Paas(Platform as a Service,平台即服务), 是为开发者提供一个应用运行的平台,有了这人平 ...