上周有一个封装javabean的流程,成员变量有好多,一路写if(!=null){setXXX} 真的好麻烦,有时候一不小心还会漏掉,很是麻烦,就想到用反射的方法自动进行拼装bean。

bean

  1. package com.jiaotd.reflect;
  2.  
  3. /**
  4. * @author jiaotd@asiainfo.com
  5. * @since 2016年3月14日 上午9:12:47
  6. */
  7. public class NewCustInfo {
  8. public String dataId;
  9. public String custId;
  10. public String provCode;
  11. public String regionId;
  12. public String billId;
  13. public String custName;
  14. public String custCertType;
  15. public String custCertNo;
  16. public String custCertAddr;
  17. public String certValiddate;
  18. public String certExpdate;
  19. public String gender;
  20. public String nation;
  21. public String birthday;
  22. public String linkaddr;
  23. public String linkman;
  24. public String linkphone;
  25. public String issuingAuthority;
  26. public String fistGetDate;
  27. public String validduration;
  28. public String archiveNo;
  29. public String state;
  30. public String createDate;
  31. public String authType;
  32. public String notes;
  33. public String ext1;
  34. public String ext2;
  35. public String ext3;
  36. public String ext4;
  37. public String ext5;
  38. public String ext6;
  39. public String ext7;
  40. public String ext8;
  41. public String ext9;
  42. public String ext10;
  43.  
  44. public NewCustInfo() {
  45. }
  46.  
  47. public String getDataId() {
  48. return dataId;
  49. }
  50.  
  51. public void setDataId(String dataId) {
  52. this.dataId = dataId;
  53. }
  54.  
  55. public String getCustId() {
  56. return custId;
  57. }
  58.  
  59. public void setCustId(String custId) {
  60. this.custId = custId;
  61. }
  62.  
  63. public String getProvCode() {
  64. return provCode;
  65. }
  66.  
  67. public void setProvCode(String provCode) {
  68. this.provCode = provCode;
  69. }
  70.  
  71. public String getRegionId() {
  72. return regionId;
  73. }
  74.  
  75. public void setRegionId(String regionId) {
  76. this.regionId = regionId;
  77. }
  78.  
  79. public String getBillId() {
  80. return billId;
  81. }
  82.  
  83. public void setBillId(String billId) {
  84. this.billId = billId;
  85. }
  86.  
  87. public String getCustName() {
  88. return custName;
  89. }
  90.  
  91. public void setCustName(String custName) {
  92. this.custName = custName;
  93. }
  94.  
  95. public String getCustCertType() {
  96. return custCertType;
  97. }
  98.  
  99. public void setCustCertType(String custCertType) {
  100. this.custCertType = custCertType;
  101. }
  102.  
  103. public String getCustCertNo() {
  104. return custCertNo;
  105. }
  106.  
  107. public void setCustCertNo(String custCertNo) {
  108. this.custCertNo = custCertNo;
  109. }
  110.  
  111. public String getCustCertAddr() {
  112. return custCertAddr;
  113. }
  114.  
  115. public void setCustCertAddr(String custCertAddr) {
  116. this.custCertAddr = custCertAddr;
  117. }
  118.  
  119. public String getCertValiddate() {
  120. return certValiddate;
  121. }
  122.  
  123. public void setCertValiddate(String certValiddate) {
  124. this.certValiddate = certValiddate;
  125. }
  126.  
  127. public String getCertExpdate() {
  128. return certExpdate;
  129. }
  130.  
  131. public void setCertExpdate(String certExpdate) {
  132. this.certExpdate = certExpdate;
  133. }
  134.  
  135. public String getGender() {
  136. return gender;
  137. }
  138.  
  139. public void setGender(String gender) {
  140. this.gender = gender;
  141. }
  142.  
  143. public String getNation() {
  144. return nation;
  145. }
  146.  
  147. public void setNation(String nation) {
  148. this.nation = nation;
  149. }
  150.  
  151. public String getBirthday() {
  152. return birthday;
  153. }
  154.  
  155. public void setBirthday(String birthday) {
  156. this.birthday = birthday;
  157. }
  158.  
  159. public String getLinkaddr() {
  160. return linkaddr;
  161. }
  162.  
  163. public void setLinkaddr(String linkaddr) {
  164. this.linkaddr = linkaddr;
  165. }
  166.  
  167. public String getLinkman() {
  168. return linkman;
  169. }
  170.  
  171. public void setLinkman(String linkman) {
  172. this.linkman = linkman;
  173. }
  174.  
  175. public String getLinkphone() {
  176. return linkphone;
  177. }
  178.  
  179. public void setLinkphone(String linkphone) {
  180. this.linkphone = linkphone;
  181. }
  182.  
  183. public String getIssuingAuthority() {
  184. return issuingAuthority;
  185. }
  186.  
  187. public void setIssuingAuthority(String issuingAuthority) {
  188. this.issuingAuthority = issuingAuthority;
  189. }
  190.  
  191. public String getFistGetDate() {
  192. return fistGetDate;
  193. }
  194.  
  195. public void setFistGetDate(String fistGetDate) {
  196. this.fistGetDate = fistGetDate;
  197. }
  198.  
  199. public String getValidduration() {
  200. return validduration;
  201. }
  202.  
  203. public void setValidduration(String validduration) {
  204. this.validduration = validduration;
  205. }
  206.  
  207. public String getArchiveNo() {
  208. return archiveNo;
  209. }
  210.  
  211. public void setArchiveNo(String archiveNo) {
  212. this.archiveNo = archiveNo;
  213. }
  214.  
  215. public String getState() {
  216. return state;
  217. }
  218.  
  219. public void setState(String state) {
  220. this.state = state;
  221. }
  222.  
  223. public String getCreateDate() {
  224. return createDate;
  225. }
  226.  
  227. public void setCreateDate(String createDate) {
  228. this.createDate = createDate;
  229. }
  230.  
  231. public String getAuthType() {
  232. return authType;
  233. }
  234.  
  235. public void setAuthType(String authType) {
  236. this.authType = authType;
  237. }
  238.  
  239. public String getNotes() {
  240. return notes;
  241. }
  242.  
  243. public void setNotes(String notes) {
  244. this.notes = notes;
  245. }
  246.  
  247. public String getExt1() {
  248. return ext1;
  249. }
  250.  
  251. public void setExt1(String ext1) {
  252. this.ext1 = ext1;
  253. }
  254.  
  255. public String getExt2() {
  256. return ext2;
  257. }
  258.  
  259. public void setExt2(String ext2) {
  260. this.ext2 = ext2;
  261. }
  262.  
  263. public String getExt3() {
  264. return ext3;
  265. }
  266.  
  267. public void setExt3(String ext3) {
  268. this.ext3 = ext3;
  269. }
  270.  
  271. public String getExt4() {
  272. return ext4;
  273. }
  274.  
  275. public void setExt4(String ext4) {
  276. this.ext4 = ext4;
  277. }
  278.  
  279. public String getExt5() {
  280. return ext5;
  281. }
  282.  
  283. public void setExt5(String ext5) {
  284. this.ext5 = ext5;
  285. }
  286.  
  287. public String getExt6() {
  288. return ext6;
  289. }
  290.  
  291. public void setExt6(String ext6) {
  292. this.ext6 = ext6;
  293. }
  294.  
  295. public String getExt7() {
  296. return ext7;
  297. }
  298.  
  299. public void setExt7(String ext7) {
  300. this.ext7 = ext7;
  301. }
  302.  
  303. public String getExt8() {
  304. return ext8;
  305. }
  306.  
  307. public void setExt8(String ext8) {
  308. this.ext8 = ext8;
  309. }
  310.  
  311. public String getExt9() {
  312. return ext9;
  313. }
  314.  
  315. public void setExt9(String ext9) {
  316. this.ext9 = ext9;
  317. }
  318.  
  319. public String getExt10() {
  320. return ext10;
  321. }
  322.  
  323. public void setExt10(String ext10) {
  324. this.ext10 = ext10;
  325. }
  326.  
  327. @Override
  328. public String toString() {
  329. return "NewCustInfo [dataId=" + dataId + ", custId=" + custId
  330. + ", provCode=" + provCode + ", regionId=" + regionId
  331. + ", billId=" + billId + ", custName=" + custName
  332. + ", custCertType=" + custCertType + ", custCertNo="
  333. + custCertNo + ", custCertAddr=" + custCertAddr
  334. + ", certValiddate=" + certValiddate + ", certExpdate="
  335. + certExpdate + ", gender=" + gender + ", nation=" + nation
  336. + ", birthday=" + birthday + ", linkaddr=" + linkaddr
  337. + ", linkman=" + linkman + ", linkphone=" + linkphone
  338. + ", issuingAuthority=" + issuingAuthority + ", fistGetDate="
  339. + fistGetDate + ", validduration=" + validduration
  340. + ", archiveNo=" + archiveNo + ", state=" + state
  341. + ", createDate=" + createDate + ", authType=" + authType
  342. + ", notes=" + notes + ", ext1=" + ext1 + ", ext2=" + ext2
  343. + ", ext3=" + ext3 + ", ext4=" + ext4 + ", ext5=" + ext5
  344. + ", ext6=" + ext6 + ", ext7=" + ext7 + ", ext8=" + ext8
  345. + ", ext9=" + ext9 + ", ext10=" + ext10 + "]";
  346. }
  347.  
  348. }

具体方法

需要注意的是

Method method = clazz.getMethod(key, String.class);

第一个参数是方法名,第二参数是一个多参数,即给方法需要的所有参数的类型。

本bean对象都是String类型的,所以可以这写,其余情景可以自行变形。

传入你要分装的bean对象和值

method.invoke(newcustinfo,map.get(s));

  1. package com.jiaotd.reflect;
  2.  
  3. import java.lang.reflect.Method;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. /**
  10. * @since 2016年3月14日 上午9:01:41
  11. */
  12. public class CreateBean {
  13.  
  14. public static List<String> paramBodyKey = new ArrayList<String>();
  15. static {
  16. paramBodyKey.add("dataId");
  17. paramBodyKey.add("custId");
  18. paramBodyKey.add("provCode");
  19. paramBodyKey.add("regionId");
  20. paramBodyKey.add("billId");
  21. paramBodyKey.add("custName");
  22. paramBodyKey.add("custCertType");
  23. paramBodyKey.add("custCertNo");
  24. paramBodyKey.add("custCertAddr");
  25. paramBodyKey.add("certValiddate");
  26. paramBodyKey.add("certExpdate");
  27. paramBodyKey.add("gender");
  28. paramBodyKey.add("nation");
  29. paramBodyKey.add("birthday");
  30. paramBodyKey.add("linkaddr");
  31. paramBodyKey.add("linkman");
  32. paramBodyKey.add("linkphone");
  33. paramBodyKey.add("issuingAuthority");
  34. paramBodyKey.add("fistGetDate");
  35. paramBodyKey.add("validduration");
  36. paramBodyKey.add("archiveNo");
  37. paramBodyKey.add("state");
  38. paramBodyKey.add("createDate");
  39. paramBodyKey.add("authType");
  40. paramBodyKey.add("notes");
  41. paramBodyKey.add("ext1");
  42. paramBodyKey.add("ext2");
  43. paramBodyKey.add("ext3");
  44. paramBodyKey.add("ext4");
  45. paramBodyKey.add("ext5");
  46. paramBodyKey.add("ext6");
  47. paramBodyKey.add("ext7");
  48. paramBodyKey.add("ext8");
  49. paramBodyKey.add("ext9");
  50. paramBodyKey.add("ext10");
  51. }
  52.  
  53. public static Map<String, String> padBean(String str){
  54. Map<String, String> map = new HashMap<String,String>();
  55. String[] strs = str.split("\\|");
  56. for(int i=0;i<strs.length;i++){
  57. String key = paramBodyKey.get(i);
  58. String value = strs[i];
  59. map.put(key, value);
  60. }
  61. return map;
  62. }
  63.  
  64. public static NewCustInfo getbean(Map<String, String> map){
  65. NewCustInfo newcustinfo = new NewCustInfo();
  66. Class clazz = NewCustInfo.class;
  67. for(String s : map.keySet()){
  68. String key ="set" + s.substring(0, 1).toUpperCase()+s.substring(1, s.length());
  69. try {
  70. Method method = clazz.getMethod(key, String.class);
  71. method.invoke(newcustinfo,map.get(s));
  72. } catch (Exception e) {
  73. e.printStackTrace();
  74. }
  75. }
  76.  
  77. return newcustinfo;
  78. }
  79.  
  80. public static void main(String[] args) {
  81. String str = "||XX|||XX|XX|XX|XX||XX|XX|XXX||||XX|||||XX||XX||XX|XX|XX|XX|XX|XX||XX|XX|";
  82. Map<String, String> map = padBean(str);
  83. System.out.println(getbean(map));
  84.  
  85. }
  86. }

通过java反射,封装bean的更多相关文章

  1. Java反射之Bean修改更新属性值等工具类

    package com.bocean.util; import java.lang.annotation.Annotation; import java.lang.reflect.Field; imp ...

  2. 不使用BeanUtils,利用Java反射机制:表单数据自动封装到JavaBean

    在百度搜“java反射 将表单数据自动封装到javabean ”,第一页显示的都是一样的代码,都是利用导入第三方jar包<commons-beanutils>和<commons-lo ...

  3. 利用java反射将结果集封装成为对象和对象集合

    java反射机制是什么 反射机制是在运行状态中,可以知道任何一个类的属性和方法,并且调用类的属性和方法: 反射机制能够做什么 1.判断运行对象的所属类 2.构造任意一个类的对象 3.获取任意一个类的属 ...

  4. 利用Java反射机制将Bean转成Map

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  5. java 反射,注解,泛型,内省(高级知识点)

     Java反射 1.Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs    取得任何一个已知名称的class的内部信息, 包括 ...

  6. Java反射机制(Reflect)解析

    一.导读 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计 ...

  7. JAVA反射机制及理解

    JAVA反射 往往当我们面对一项新的知识时,我们往往需要知道三个方面,它是什么,它能做什么,它比原有知识强在哪里,我们该怎么使用它.当你能够解决这些问题时,便意味着你已经对这项知识入门了. 首先: 反 ...

  8. JavaSE学习总结(十五)—— Java反射与注解

    一.静态语言与动态语言 静态类型语言:是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求.强类型 动态 ...

  9. Java反射初探 ——“当类也学会照镜子”

    反射的作用 开门见山地说说反射的作用   1.为我们提供了全面的分析类信息的能力 2.动态加载类   我理解的“反射”的意义 (仅个人理解哈)   我理解的java反射机制就是: 提供一套完善而强大的 ...

  10. java反射知识点总结

    一.java反射基础 1.1 什么叫java反射? 答:程序运行期间,动态的获取类的基本信息.比如:创建对象,调用类的方法,获得类的基本结构.这样给程序设计提供了很大的灵活性.个人总结就是:根据动态需 ...

随机推荐

  1. 1.15 kickstart rpm yum

    ###########bootstrap 启动加载器 (pxelinux.0)传输pxelinux.cfg NIC #network interface PXEpxelinux.0/tftp/pxel ...

  2. floyd算法

    求两个顶点间的最短距离,直觉是这样的问题可以用尝试和枚举的办法来求解,这显然可行,但是我们可以换个方式来看待这个问题,比如, 可以这样描述,“在给定的点集(编号为1~k,k=图中所有的顶点数量)中,i ...

  3. Qt QAxObject操作excel文件过程总结(转):

    正好同事问道Qt下操作excel. 转自:http://blog.csdn.net/a156392343/article/details/48092515 配制方面: 1.确保Excel软件在本地服务 ...

  4. python命令行解释器 argparse

    一: argparse介绍 1.  argparse argparse,它是Python标准库中推荐使用的编写命令行程序的工具 parser = argparse.ArgumentParser()  ...

  5. 10天学会phpWeChat——第一天:核心框架的目录结构

    phpWeCaht是一款优秀的PC网站+微信公共号开发框架. 本博客系列将图文结合,详细介绍phpWeChat 的使用方法,今天进入phpWeChat系列教程之<10天学会phpWeChat&g ...

  6. visual studio code

    偏好设置: "editor.fontSize": 26, "editor.tabSize": 8, "editor.mouseWheelZoom&qu ...

  7. 拜拜了,浮动布局-基于display:inline-block的列表布局

    原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]本文地址:http://www.zhangxinxu.com/wordpress/?p=1194

  8. [PHP] - Laravel 5 的 Hello Wold

    吐槽一段 整了半天,Laravel下载麻烦得可以去死.先要安装composer,而composer又被共墙了,之后又要安装git,安装完git还要注册git,等等.... 最终放弃这种玩法,太恶心了. ...

  9. Android 自定义事件监听器

    当我们自定义View的时候,如果需要返回值,那么就需要自定义一个监听器. 这里用一个自定义的数字选框为例. 首先定义view. 1.新建view,NumberKeyboardView.Java,自定义 ...

  10. 【python】遍历类的所有成员

    # -*- coding: utf-8 -*- #sharejs.com提供代码,转载请注明出处 class Site(object): def __init__(self): self.title ...