zoukankan      html  css  js  c++  java
  • 通过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 + "]";
        }
    
        
    }
    View Code

     具体方法

    需要注意的是

    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));
            
        }
    }
    View Code
  • 相关阅读:
    添加语句<tx:annotation-driven transaction-manager="txManager"/>报错
    ssh学习(1)
    C.Sum 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
    Problem 1004-2017 ACM/ICPC Asia Regional Shenyang Online
    Problem 1002-2017 ACM/ICPC Asia Regional Shenyang Online
    2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛- A. Banana
    HDU 1052 Tian Ji -- The Horse Racing(贪心)
    HDU 1236 排名
    HDU 2550 百步穿杨
    HDU 1084 What Is Your Grade?(排序)
  • 原文地址:https://www.cnblogs.com/Yiran583/p/5275121.html
Copyright © 2011-2022 走看看