通过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反射? 答:程序运行期间,动态的获取类的基本信息.比如:创建对象,调用类的方法,获得类的基本结构.这样给程序设计提供了很大的灵活性.个人总结就是:根据动态需 ...
随机推荐
- Unity扩展编辑器学习笔记--从路径下找到拥有某个组件类型的预设
public static List<T> GetAssetsWithScript<T>(string path) where T:MonoBehaviour { T tmp; ...
- JS时间格式 GMT格式转换
JavaScript时间格式转换总结 1.当前系统区域设置格式(toLocaleDateString和toLocaleTimeString) 例子:(new Date()).toLocaleDateS ...
- 使用keepalived实现mysql主从复制的自动切换
最近测试了一下mysql+keepalived实现主从自动切换,主从都需要安装keepalived,使用vip漂移实现主从自动切换,这里主要记录的是keepalived的文件配置. 这里mysql搭建 ...
- windows脚本调用批处理
set ws=wscript.createobject(“wscript.shell”)ws.run “batchfn.bat /start”,0 save as xxx.vbe file.
- tengine+tomcat配置
# 根据你服务器的cpu核数来确定此值 worker_processes 4; error_log logs/error.log crit; #error_log logs/error.log not ...
- Weblogic是瓦特?和JVM是瓦特关系?
所谓固定内存60M是瓦特? 以下内容是个瓦特? “总内存大小=堆内存+非堆内存1200m:为堆内存大小,如果不指定后者参数则有最大数限制,网上很多文章认为这就是JVM内存,-Xmx为设置最大堆内存60 ...
- 测试dockerfile
测试dockerfile是否ok(比如我的Dockerfile在deploy目录下) docker build -t my_image -f deploy/Dockerfile . docker im ...
- 数据挖掘之决策树ID3算法(C#实现)
决策树是一种非常经典的分类器,它的作用原理有点类似于我们玩的猜谜游戏.比如猜一个动物: 问:这个动物是陆生动物吗? 答:是的. 问:这个动物有鳃吗? 答:没有. 这样的两个问题顺序就有些颠倒,因为一般 ...
- Android Event
2016-10-11 http://p.codekk.com/detail/Android/wcy10586/androidEvent https://my.oschina.net/u/191330/ ...
- Windows安装Node.Js
1.下载https://nodejs.org/ 2.安装 3.修改环境变量,添加安装的Node.js的目录(此处似乎可以不用配置) 4.查看npm指令 关于npm介绍“Nodejs自身提供了基本的模块 ...