锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1: 綾誨瀷鐨勬蹇? 姒傚康錛氱被鍨嬪埢鍒掍簡涓緇勫煎強鍏朵笂鍙柦琛岀殑鎿嶄綔錛屽彲鐞嗚В涓哄奸泦鍜屾搷浣滈泦鏋勬垚鐨勪簩鍏冪粍銆? 綾誨瀷鐨勬蹇典笌鍊肩殑姒傚康鐩稿绔嬶紝鍓嶈呮槸紼嬪簭涓殑姒傚康錛屽悗鑰呭垯鏄▼搴忚繍琛屾椂鐨勬蹇碉紝涓よ呴氳繃鏍囪瘑鍊肩殑璇█鎴愬垎錛堜緥濡傦紝鍙橀噺銆佽〃杈懼紡絳夛級鑱旂郴璧鋒潵銆? 姣斿鍙橀噺v璇存槑涓哄叿鏈夌被鍨婽錛岀被鍨婽鎵鍒誨垝鐨勫奸泦涓簕v1錛寁2錛?#8230;vn錛?#8230;}錛屽垯鍙橀噺v榪愯鏃惰兘鍙栦笖鍙兘鍙栨煇涓獀i涓哄箋傜敱姝ゅ彲瑙侊紝綾誨瀷瑙勫畾浜嗗叿鏈夎綾誨瀷鐨勫彉閲忔垨琛ㄨ揪寮忕殑鍙栧艱寖鍥淬? 2: 綾諱笌綾誨瀷 A: 鍏辨? 鍦ㄥ璞″紡璇█涓紝“鍊?#8221;涓哄璞★紙鎴栧璞℃寚寮曪紝浣嗘湰璐ㄤ笂浠嶄負瀵硅薄錛夈傛墍浠ワ紝瀵硅薄寮忚璦涓殑綾誨瀷鍒誨垝浜嗕竴緇勫璞″強鍏朵笂鍙柦琛岀殑鎿嶄綔銆傜被鍨嬫墍鍒誨垝鐨勫璞$О涓虹被鍨嬬殑瀹炰緥銆傜被涔熷埢鍒掍簡涓緇勫璞°? 涓よ呯殑鍏辨у湪浜庝簩鑰呭潎鍒誨垝浜嗕竴緇勫璞″強鍏朵笂鐨勬搷浣滐紙鍦ㄥ墠闈㈠叧浜庣被鐨勮璁轟腑錛屽茍鏈己璋冪被鍒誨垝瀵硅薄涓婄殑鎿嶄綔榪欎竴浜嬪疄錛夛紝鎵浠ワ紝鏃㈠彲浠ヨ瀵硅薄鏄被鍨嬬殑瀹炰緥錛屼篃鍙互璇村璞℃槸綾葷殑瀹炰緥錛岀被鍨嬪拰綾誨湪涓庡璞$殑鍏崇郴涓婃槸鐩稿悓鐨勩備笉榪囷紝綾誨瀷嬈插埢鍒掍竴緇勫璞″強鍏朵笂鐨勬搷浣滐紝蹇呴』鍊熷姪浜庣被錛屽洜涓虹被鏄揪鍒拌繖縐嶇洰鐨勭殑鍞竴璁炬柦銆傜敱姝ゅ彲瑙侊紝綾誨瀷鏄互綾諱負鍩虹鐨勶紝鏄氳繃綾繪潵瀹氫箟鐨勶紝榪欎綋鐜頒簡浜岃呯殑鑱旂郴銆? B: 鍖哄埆 l 浣滅敤涓嶅悓 綾繪槸紼嬪簭鐨勬瀯閫犲崟浣嶏紝鏄弿榪頒竴緇勫璞″強鍏朵笂鎿嶄綔鐨勫敮涓璇█鎴愬垎錛屾晠鍏朵綔鐢ㄤ富瑕佹槸鍏蜂綋鎻忚堪榪欑粍瀵硅薄錛屾彁渚涜繍琛屾椂鍒涘緩榪欎簺瀵硅薄鐨?#8220;妯℃澘”銆備緥濡傦紝鍩轟簬綾婚棿鐨勭戶鎵垮叧緋葷殑媧劇敓綾誨畾涔夎鏂藉氨鍙嶆槧浜嗙被鍦ㄦ弿榪板璞℃柟闈㈢殑浣滅敤銆? 綾誨瀷鍒欐槸鏍囧織鍙橀噺鎴栬〃杈懼紡鍙栧艱寖鍥寸殑涓縐嶈璦鎴愬垎錛屽叾浣滅敤涓昏鏄榪欎簺鍙橀噺鎴栬〃杈懼紡榪愯鏃剁殑鍙栧艱繘琛岀害鏉熴備緥濡傦紝瀵硅祴鍊艱鍙ュ乏閮ㄧ殑鍙橀噺鍜屽彸閮ㄧ殑琛ㄨ揪寮忕殑綾誨瀷鍖歸厤媯鏌ュ氨鍙嶆槧浜嗙被鍨嬬殑綰︽潫浣滅敤銆? l 涓庡璞¤仈緋葷殑绱у瘑紼嬪簭涓嶅悓 綾繪弿榪板璞$殑鍏蜂綋褰㈠紡鍜屽叾涓婂彲鏂借鐨勫叿浣撴搷浣滐紝涓斿己璋冩墍鎻忚堪鐨勪竴緇勫璞$殑鍏辨э紝鍥犺岋紝涓庡叿浣撳璞¤仈緋昏緝瀵嗗垏錛岃屼笌瀵硅薄闆嗙殑澶у皬鍒欒仈緋昏緝灝戙? 綾誨瀷寮鴻皟鎵鎻忚堪鐨勪竴緇勫璞$殑鑼冨洿鍜屽彲鏂借鎿嶄綔鐨勮寖鍥達紝涓庡璞¢泦鐨勫ぇ灝忚仈緋昏緝瀵嗗垏錛岃屼笌鍏朵腑鍏蜂綋瀵硅薄鍒欒仈緋昏緝灝戙? l 騫朵笉鏄墍鏈夌被閮藉彲鐩存帴浣滀負綾誨瀷浣跨敤 綾繪槸綾誨瀷鐨勫熀紜錛岀被鍨嬮潬綾繪潵瀹氫箟錛屾湁浜涚被鍙洿鎺ヤ綔涓虹被鍨嬫潵浣跨敤錛屽湪榪欑鎰忎箟涓嬶紝鎴戜滑涔熷彲縐拌繖浜涚被鏄被鍨嬨? 浣嗘槸錛屼篃鏈変竴浜涚被涓嶈兘鐩存帴浣滀負綾誨瀷鏉ヤ嬌鐢紝榪欐槸鍥犱負錛屼粠綾誨瀷鐨勭害鏉熶綔鐢ㄦ潵鐪嬶紝綾誨瀷寮鴻皟鎵鍒誨垝鐨勫璞$殑紜畾鎬э紝鍗沖璞¤寖鍥寸殑紜畾鎬с傚洜姝わ紝鍙湁鎵鎻忚堪鐨勫璞$殑鑼冨洿紜畾鐨勭被鎵嶅彲鐩存帴鐢ㄤ綔綾誨瀷銆?/p>
BeanUtils涓昏鎻愪緵浜嗗浜嶫avaBean榪涜鍚勭鎿嶄綔錛?
BeanUtils涓鍏卞垎4涓寘錛?
converters 灝辨槸涓撻棬澶勭悊涓嶅悓浼犲叆鐨?object 璇ュ浣曡漿鎹? locale 鍛? 灝辨槸涓轟簡鍥介檯鍖栫殑澶勭悊銆傚叾涓笂闈袱涓槸BeanUtils鐨勯粯璁ゅ疄鐜幫紝瀹冩病鏈夐拡瀵規湰鍦板寲鐨勪換浣曞鐞嗭紝榪欎釜鍙互鎻愰珮鎵ц鏁堢巼銆?
1銆佽繖涓寘涓昏鎻愪緵鐢ㄤ簬鎿嶄綔JavaBean鐨勫伐鍏風被錛孞akarta-Common-BeanUtils鐨勪富瑕佸姛鑳介兘鍦ㄨ繖涓寘閲屽疄鐜般?/p>
public class Employee { public Address getAddress(String type); public void setAddress(String type, Address address); public Employee getSubordinate(int index); public void setSubordinate(int index, Employee subordinate); public String getFirstName(); public void setFirstName(String firstName); public String getLastName(); public void setLastName(String lastName); } |
2銆丅eanUtils鍙互鐩存帴get鍜宻et涓涓睘鎬х殑鍊箋傚畠灝唒roperty鍒嗘垚3縐嶇被鍨嬶細
璁塊棶涓嶅悓綾誨瀷鐨勬暟鎹彲浠ョ洿鎺ヨ皟鐢ㄥ嚱鏁癵etProperty鍜宻etProperty銆傚畠浠兘鍙湁2涓弬鏁幫紝絎竴涓槸JavaBean瀵硅薄錛岀浜屼釜鏄鎿嶄綔鐨勫睘鎬у悕銆?
Company c = new Company(); c.setName("Simple"); |
瀵逛簬Simple綾誨瀷錛屽弬鏁頒簩鐩存帴鏄睘鎬у悕鍗沖彲
//Simple System.out.println(BeanUtils.getProperty(c, "name")); |
//Map System.out.println(BeanUtils.getProperty(c, "address (A2)")); HashMap am = new HashMap(); am.put("1","234-222-1222211"); am.put("2","021-086-1232323"); BeanUtils.setProperty(c,"telephone",am); System.out.println(BeanUtils.getProperty(c, "telephone (2)")); |
//index System.out.println(BeanUtils.getProperty(c, "otherInfo[2]")); BeanUtils.setProperty(c, "product[1]", "NOTES SERVER"); System.out.println(BeanUtils.getProperty(c, "product[1]")); |
//nest System.out.println(BeanUtils.getProperty(c, "employee[1].name")); |
3銆佹澶栵紝榪樻湁涓涓緢閲嶈鐨勬柟娉昪opyProperty錛屽彲浠ョ洿鎺ヨ繘琛孊ean涔嬮棿鐨刢lone銆?
Company c2 = new Company(); BeanUtils.copyProperties(c2, c); |
浣嗘槸榪欑copy閮芥槸嫻呮嫹璐濓紝澶嶅埗鍚庣殑2涓狟ean鐨勫悓涓涓睘鎬у彲鑳芥嫢鏈夊悓涓涓璞$殑ref錛岃繖涓湪浣跨敤鏃惰灝忓績錛岀壒鍒槸瀵逛簬灞炴т負鑷畾涔夌被鐨勬儏鍐點?
4銆佹渶鍚庤繕鏈塸opulate錛屽畠鐢ㄤ簬灝嗕竴涓猰ap鐨勫煎~鍏呭埌涓涓猙ean涓?
瀹冨疄鐜頒竴涓姩鎬佺殑Bean錛屽彲浠ョ洿鎺ュ線閲岄潰鍔犲叆灞炴э紝浣滀負涓涓狫avaBean涓鏍蜂嬌鐢紝涔熷彲浠ョ敤涓婇潰鐨凚eanUtils鎴杇et/set鏂規硶榪涜鎿嶄綔錛岃屼笉鐢ㄤ簨鍏堝畾涔変竴涓爣鍑嗙殑JavaBean綾誨暒錛氾級
璁板緱鍦↗2ee璁捐妯″紡涓湁涓縐峍alue Object鐨勬ā寮忥紝鐢ㄤ簬鍦∕VC鍚勫眰涔嬮棿浼犻掓暟鎹紝閬垮厤鐩存帴浼犻掑ぇ涓氬姟瀵硅薄寮曡搗鐨勬ц兘闂錛屼負浜嗛伩鍏嶅湪欏圭洰涓嚭鐜板緢澶欱ean綾伙紝鍦ㄤ功涓彁渚涗簡涓涓姩鎬乂alue Object鐨勫疄鐜幫紙閫氳繃鎵╁睍Map錛夈傝繖閲孡azyDynaBean鍒欏彲浠ヤ綔涓轟竴縐嶆洿鍔犳垚鐔熴佺ǔ瀹氱殑瀹炵幇鏉ヤ嬌鐢ㄣ?/p>
//榪欓噷浣跨敤LazyDynaMap錛屽畠鏄疞azyBean鐨勪竴涓交閲忕駭瀹炵幇 LazyDynaMap dynaBean1 = new LazyDynaMap(); dynaBean1.set("foo", "bar"); // simple dynaBean1.set("customer", "title", "Mr"); // mapped dynaBean1.set("address", 0, "address1"); // indexed System.out.println(dynaBean1.get("address",0)); Map myMap = dynaBean1.getMap(); // retrieve the Map System.out.println(myMap.toString()); |
涓婇潰鐨勪緥瀛愬彲浠ョ湅鍒幫紝瀹冨彲浠ュ湪set鏃惰嚜鍔ㄥ鍔燽ean鐨刾roperty錛堟棦璧嬪肩殑鍚屾椂澧炲姞Bean涓殑property錛夛紝鍚屾椂涔熸敮鎸?涓被鍨嬬殑property錛屽茍涓擫azyDynaMap榪樺彲浠ュ鍑轟負map銆?
瀵逛簬榪欎釜綾昏繕鏈変袱涓噸瑕佺殑Field瑕佹敞鎰忥細
returnnull鈥斺旀寚瀹氬湪get鏂規硶浣跨敤浜嗕竴涓病鏈夊畾涔夎繃鐨刾roperty鏃訛紝DynaBean鐨勮涓恒?/p>
//鍙栫殑瀛楁鐨勪俊鎭?/span> dynaBean1.setReturnNull(true);//璁句負ture銆傝嫢Bean涓病鏈夋瀛楁錛岃繑鍥瀗ull //榛樿涓篺alse銆傝嫢Bean涓病鏈夋瀛楁錛岃嚜鍔ㄥ鍔犱竴涓細錛?/span> System.out.println(dynaBean1.get("aaa"));//姝ゆ椂榪斿洖null Restricted鈥斺旀寚瀹氭槸鍚﹀厑璁告敼鍙樿繖涓猙ean鐨刾roperty銆?/pre> |
閫氳繃璁劇疆榪欎袱涓睘鎬э紝鍙互闃叉鎰忓淇敼DynaBean鐨刾roperty銆傚湪璁捐鏋舵瀯鏃訛紝浣犲彲浠ュ湪鍚庡彴浠庢暟鎹〃鎴杧ml鏂囦歡鑷姩浜х敓DynaBean錛屽湪浼犲埌鎺у埗灞傚拰琛ㄧず灞備箣鍓嶈緗笂榪板睘鎬т嬌鍏禕ean緇撴瀯涓嶅厑璁鎬慨鏀癸紝濡傛灝變笉鍙兘鏃犳剰涓慨鏀笲ean鍖呭惈鐨勫睘鎬?#8230;…榪欐牱鏃㈠彲浠ヤ韓鐢ㄥ畠鐨勪究鍒╋紝鏈夊彲浠ラ槻姝㈢敱姝ゅ紩鍏ョ殑閿欒鍙兘錛岃璁¤呭疄鍦ㄦ繁寰楀伔鎳掔殑綺鵑珦鍟婏紒錛侊紒錛侊紒
榪欎袱涓被鍑犱箮鏈変竴鎽鎬竴鏍風殑鍔熻兘錛屽敮涓鐨勫尯鍒槸錛欱eanUtils鍦ㄥBean璧嬪兼槸浼氳繘琛岀被鍨嬭漿鍖栥備婦渚嬫潵璇翠篃灝辨槸鍦╟opyProperty鏃跺彧瑕佸睘鎬у悕鐩稿悓錛屽氨綆楃被鍨嬩笉鍚岋紝BeanUtils涔熷彲浠ヨ繘琛宑opy錛涜孭ropertyBean鍒欏彲鑳戒細鎶ラ敊錛侊紒
閽堝涓婇潰鐨勪緥瀛愶紝鏂板緩涓涓狢ompany2鐨勭被錛屽叾涓唬鐮佷笌Company涓鏍鳳紝鍙槸灝唎therinfo浠嶴tring[]鏀逛負String銆?/p>
Company c = init(); Company2 c2 = new Company2(); BeanUtils.copyProperties(c2,c); // PropertyUtils.copyProperties(c2,c); 榪欏彞浼氭姤閿欙紒錛?/span> System.out.println(c2.getOtherInfo()); |
褰撶劧2涓狟ean涔嬮棿鐨勫悓鍚嶅睘鎬х殑綾誨瀷蹇呴』鏄彲浠ヨ漿鍖栫殑錛屽惁鍒欑敤BeanUtils涓鏍蜂細鎶ラ敊銆?
鑻ュ疄鐜頒簡org.apache.commons.beanutils.Converter鎺ュ彛鍒欏彲浠ヨ嚜瀹氫箟綾誨瀷涔嬮棿鐨勮漿鍖栥?
鐢變簬涓嶅仛綾誨瀷杞寲錛岀敤PropertyUtils鍦ㄩ熷害涓婁細鏈夊緢澶ф彁楂橈紒
姝ゅ錛屼笉浣滅被鍨嬭漿鍖栬繕鏈変竴涓ソ澶勶紝濡備笅闈㈢殑浠g爜錛?/p>
//test data type convert //BeanUtils榪斿洖鐨勬槸String // ArrayList a1 = BeanUtils.getProperty(c,"product"); //鍙栧嚭鍚庣洿鎺ヨ杞負String System.out.println("--" + BeanUtils.getProperty(c,"product")); //PropertyUtils榪斿洖鐨勬槸Object ArrayList a = (ArrayList)PropertyUtils.getProperty(c,"product"); System.out.println("--" + a.get(1)); |
鐢˙eanUtils鏃犳硶榪斿洖涓涓璞★紙闄ら潪鑷繁鍐欎竴涓狢onverter錛夛紝瀹冧細鑷姩榪涜綾誨瀷杞寲錛岀劧鍚庤繑鍥濻tring銆傚浜庢兂榪斿洖java綾繪垨鑷畾涔夌被鐨勮瘽錛岃繕鏄笉瑕佽佸畠澶ч┚杞寲浜嗐?/p>
鎵鏈夌殑XXXUtils綾婚兘鎻愪緵鐨勬槸闈欐佹柟娉曪紝鍙互鐩存帴璋冪敤錛屽叾涓昏瀹炵幇閮藉湪鐩稿簲鐨刋XXUtilsBean涓細
BeanUtils 鈥斺?gt; BeanUtilsBean
ConvertUtils 鈥斺?gt; ConvertUtilsBean
PropertyUtils 鈥斺?gt; PropertyUtilsBean
鍏舵剰鎬濈湅綾誨悕涔熷簲璇ョ煡閬撶殑宸笉澶氫簡錛屾垜灝變笉鍐嶅簾璇濆暒錛佸綋鐒朵綘涔熷彲浠ョ洿鎺ヨ皟鐢ㄩ偅浜沊XXUtilsBean錛屽姛鑳介兘涓鏍鳳紒