閲嶆瀯鏄寚鍦ㄤ笉鏀瑰彉紼嬪簭鍔熻兘鐨勫墠鎻愪笅鏀瑰彉鍏剁粨鏋勩€傞噸鏋勬槸涓€欏瑰姛鑳藉己澶х殑鎶€鏈紝浣嗘槸鎵ц璧鋒潵闇€瑕佸€嶅姞灝忓績鎵嶈銆備富瑕佺殑鍗遍櫓鍦ㄤ簬鍙兘鍦ㄤ笉緇忔剰涓紩鍏ヤ竴浜涢敊璇紝灝ゅ叾鏄湪榪涜鎵嬪伐閲嶆瀯鐨勬椂鍊欐洿鏄姝ゃ€傝繖縐嶅嵄闄╁紩鍙戜簡瀵歸噸鏋勬妧鏈殑鏅亶鎵硅瘎錛氬綋浠g爜涓嶄細宕╂簝鐨勬椂鍊欎負浠€涔堣淇敼瀹冨憿錛?
鎮ㄩ渶瑕佽繘琛屼唬鐮侀噸鏋勭殑鍘熷洜鍙兘鏈変互涓嬪嚑涓細浼犺涓殑絎竴涓師鍥犳槸錛氶渶瑕佺戶鎵夸負鏌愪釜鍙よ€佷駭鍝佽€屽紑鍙戠殑騫翠唬涔呰繙鐨勪唬鐮侊紝鎴栬€呯獊鐒剁鍒拌繖浜涗唬鐮併€傛渶鍒濈殑寮€鍙戝洟闃熷凡緇忎笉鍦ㄤ簡銆傛垜浠繀欏誨垱寤哄鍔犱簡鏂扮壒鎬х殑鏂扮増鏈蔣浠訛紝浣嗘槸榪欎簺浠g爜宸茬粡鏃犳硶鐞嗚В浜嗐€傛柊鐨勫紑鍙戦槦浼嶅浠ョ戶鏃ュ湴宸ヤ綔錛岀牬璇戜唬鐮佺劧鍚庢槧灝勪唬鐮侊紝緇忚繃澶ч噺鐨勮鍒掍笌璁捐涔嬪悗錛屼漢浠皢榪欎簺浠g爜鍒嗗壊鎴愮鐗囥€傚巻緇忛噸閲嶇(闅句箣鍚庯紝鎵€鏈夎繖浜涗笢瑗塊兘鎸夌収鏂扮増鏈殑瑕佹眰褰掍綅浜嗐€傝繖鏄嫳闆勮埇鐨勯噸鏋勬晠浜嬶紝鍑犱箮娌℃湁浜鴻兘鍦ㄧ粡鍘嗕簡榪欎簺涔嬪悗媧葷潃璁茶堪榪欐牱鐨勬晠浜嬨€?/p>
榪樻湁涓€縐嶇幇瀹炰竴浜涚殑鎯呭喌鏄」鐩腑鍔犲叆浜嗘柊鐨勯渶姹傦紝闇€瑕佸璁捐榪涜淇敼銆傝嚦浜庢槸鍥犱負鍦ㄦ渶鍒濈殑瑙勫垝榪囩▼涓け瀵燂紝榪樻槸鐢變簬閲囩敤浜嗚凱浠e紡鐨勫紑鍙戣繃紼嬶紙姣斿鏁忔嵎寮€鍙戯紝鎴栬€呮槸嫻嬭瘯椹卞姩鐨勫紑鍙戯級鑰屽湪寮€鍙戣繃紼嬩腑鏈夋剰寮曞叆闇€姹傦紝榪欎袱鑰呭茍娌℃湁瀹炶川鎬х殑鍖哄埆銆傝繖鏍風殑閲嶆瀯鐨勮妯¤灝忓緱澶氾紝鍏跺唴瀹逛竴鑸秹鍙婇€氳繃寮曞叆鎺ュ彛鎴栬€呮娊璞$被鏉ユ洿鏀圭被鐨勭戶鎵垮叧緋伙紝浠ュ強瀵圭被榪涜鍒嗗壊鍜岄噸鏂扮粍緇囷紝絳夌瓑銆?/p>
閲嶆瀯鐨勬渶鍚庝竴涓師鍥犳槸錛屽綋瀛樺湪鍙敤鐨勮嚜鍔ㄩ噸鏋勫伐鍏鋒椂錛屽彲浠ユ湁涓€涓敤鏉ラ鍏堢敓鎴愪唬鐮佺殑蹇嵎鏂瑰紡——灝卞ソ姣斿湪鎮ㄦ棤娉曠‘瀹氬浣曟嫾鍐欐煇涓崟璇嶇殑鏃跺€欙紝鍙互鐢ㄦ煇縐嶆嫾鍐欐鏌ュ伐鍏瘋緭鍏ヨ繖涓崟璇嶃€傛瘮濡傝錛屾偍鍙互鐢ㄨ繖縐嶅鉤娣℃棤濂囩殑閲嶆瀯鏂規硶鐢熸垚 getter 鍜?setter 鏂規硶錛屼竴鏃︾啛鎮変簡榪欐牱鐨勫伐鍏鳳紝瀹冨氨鍙互涓烘偍鑺傜渷寰堝鐨勬椂闂淬€?/p>
Eclipse 鐨勯噸鏋勫伐鍏鋒棤鎰忚繘琛岃嫳闆勭駭鐨勯噸鏋?#8212;—閫傚悎榪欑瑙勬ā鐨勫伐鍏峰嚑涔庢病鏈?#8212;—浣嗘槸涓嶈鏄惁鐢ㄥ埌鏁忔嵎寮€鍙戞妧鏈紝Eclipse 鐨勫伐鍏峰浜庝竴鑸▼搴忓憳淇敼浠g爜鐨勫伐浣滈兘鍏鋒湁鏃犳硶琛¢噺鐨勪環鍊箋€傛瘯绔熶換浣曞鏉傜殑鎿嶄綔鍙鑳藉鑷姩榪涜錛屽氨鍙互涓嶉偅涔堢儲闂蜂簡銆傚彧瑕佹偍鐭ラ亾 Eclipse 瀹炵幇浜嗕粈涔堟牱鐨勯噸鏋勫伐鍏鳳紝騫剁悊瑙d簡瀹冧滑鐨勯€傜敤鎯呭喌錛屾偍鐨勭敓浜у姏灝變細寰楀埌鏋佸ぇ鐨勬彁楂樸€?/p>
瑕侀檷浣庡浠g爜閫犳垚鐮村潖鐨勯闄╋紝鏈変袱縐嶉噸瑕佺殑鏂規硶銆傜涓€縐嶆柟娉曟槸瀵逛唬鐮佽繘琛屼竴濂楀畬鍏ㄥ交搴曠殑鍗曞厓嫻嬭瘯錛氬湪閲嶆瀯涔嬪墠鍜屼箣鍚庨兘蹇呴』閫氳繃榪欐牱鐨勬祴璇曘€傜浜岀鏂規硶鏄嬌鐢ㄨ嚜鍔ㄥ寲鐨勫伐鍏鋒潵榪涜閲嶆瀯錛屾瘮濡傝 Eclipse 鐨勯噸鏋勭壒鎬с€?/p>
灝嗗交搴曠殑嫻嬭瘯涓庤嚜鍔ㄥ寲閲嶆瀯緇撳悎璧鋒潵灝變細鏇村姞鏈夋晥浜嗭紝榪欐牱閲嶆瀯涔熷氨浠庝竴縐嶇縐樼殑鑹烘湳鍙樻垚浜嗘湁鐢ㄧ殑鏃ュ父宸ュ叿銆備負浜嗗鍔犳柊鐨勫姛鑳芥垨鑰呮敼榪涗唬鐮佺殑鍙淮鎶ゆ€э紝鎴戜滑鍙互鍦ㄤ笉褰卞搷鍘熸湁浠g爜鍔熻兘鐨勫熀紜€涓婅繀閫熶笖瀹夊叏鍦版敼鍙樺叾緇撴瀯銆傝繖縐嶈兘鍔涗細瀵規偍璁捐鍜屽紑鍙戜唬鐮佺殑鏂瑰紡浜х敓鏋佸ぇ鐨勫獎鍝嶏紝鍗充究鏄偍娌℃湁灝嗗叾緇撳悎鍒版寮忕殑鏁忔嵎鏂規硶涓篃娌℃湁鍏崇郴銆?/p>
Eclipse 鐨勯噸鏋勫伐鍏峰彲浠ュ垎涓轟笁澶х被錛堜笅闈㈢殑欏哄簭涔熷氨鏄繖浜涘伐鍏峰湪 Refactoring 鑿滃崟涓嚭鐜扮殑欏哄簭錛夛細
榪樻湁鍑犱釜閲嶆瀯宸ュ叿騫朵笉鑳藉畬鍏ㄥ綊鍏ヨ繖涓変釜縐嶇被錛岀壒鍒槸 Change Method Signature錛屼笉榪囧湪鏈枃涓繕鏄皢榪欎釜宸ュ叿褰掑叆絎笁綾匯€傞櫎浜嗚繖縐嶄緥澶栨儏鍐典互澶栵紝鏈枃涓嬮潰鍑犺妭閮芥槸鎸夌収涓婇潰鐨勯『搴忔潵璁ㄨ Eclipse 閲嶆瀯宸ュ叿鐨勩€?/p>
鏄劇劧錛屾偍鍗充究娌℃湁鐗瑰埆鐨勫伐鍏鳳紝涔熷彲浠ュ湪鏂囦歡緋葷粺涓噸鍛藉悕鏂囦歡鎴栬€呮槸縐誨姩鏂囦歡錛屼絾鏄鏋滄搷浣滃璞℃槸 Java 婧愪唬鐮佹枃浠訛紝鎮ㄥ氨闇€瑕佺紪杈戝緢澶氭枃浠訛紝鏇存柊鍏朵腑鐨?import
鎴?package
璇彞銆備笌姝ょ被浼鹼紝鐢ㄦ煇縐嶆枃鏈紪杈戝櫒鐨勬悳绱笌鏇挎崲鍔熻兘涔熷彲浠ュ緢瀹規槗鍦扮粰綾匯€佹柟娉曞拰鍙橀噺閲嶆柊鍛藉悕錛屼絾鏄繖鏍峰仛鐨勬椂鍊欏繀欏誨崄鍒嗗皬蹇冿紝鍥犱負涓嶅悓鐨勭被鍙兘鍏鋒湁鍚嶇О鐩鎬技鐨勬柟娉曟垨鑰呭彉閲忥紱瑕佹槸浠庡ご鍒板熬媯€鏌ラ」鐩腑鎵€鏈夌殑鏂囦歡錛屾潵淇濊瘉姣忎釜涓滆タ鐨勬爣璇嗗拰淇敼鐨勬紜€э紝閭e彲鐪熷涔忓懗鐨勩€?
Eclipse 鐨?Rename 鍜?Move 宸ュ叿鑳藉鍗佸垎鑱槑鍦板湪鏁翠釜欏圭洰涓畬鎴愯繖鏍風殑淇敼錛岃€屼笉闇€瑕佺敤鎴風殑騫叉秹銆傝繖鏄洜涓?Eclipse 鍙互鐞嗚В浠g爜鐨勮涔夛紝浠庤€岃兘澶熻瘑鍒嚭瀵規煇涓壒瀹氭柟娉曘€佸彉閲忔垨鑰呯被鍚嶇О鐨勫紩鐢ㄣ€傜畝鍖栬繖涓€浠誨姟鏈夊姪浜庣‘淇濇柟娉曘€佸彉閲忓拰綾葷殑鍚嶇О鑳藉娓呮櫚鍦版寚紺哄叾鐢ㄩ€斻€?/p>
鎴戜滑緇忓父鍙互鍙戠幇浠g爜鐨勫悕瀛椾笉鎭板綋鎴栬€呬護浜哄鏄撹瑙o紝榪欐槸鍥犱負浠g爜涓庢渶鍒濊璁$殑鍔熻兘鏈夋墍涓嶅悓銆傛瘮鏂硅錛屾煇涓敤鏉ュ湪鏂囦歡涓煡鎵劇壒瀹氬崟璇嶇殑紼嬪簭涔熻浼氭墿灞曚負鍦?Web 欏甸潰涓€氳繃 URL 鑾峰彇 InputStream
鐨勬搷浣溿€傚鏋滆繖涓€杈撳叆嫻佹渶鍒濆彨鍋?file
錛岄偅涔堝氨搴旇淇敼瀹冪殑鍚嶅瓧錛屼互渚胯兘鍙嶆槧鍏舵柊澧炵殑鏇村姞涓€鑸殑鐗規€э紝姣旀柟璇?sourceStream
銆傚紑鍙戜漢鍛樼粡甯告棤娉曟垚鍔熷湴淇敼榪欎簺鍚嶇О錛屽洜涓鴻繖涓繃紼嬫槸鍗佸垎娣蜂貢鍜屼箯鍛崇殑銆傝繖褰撶劧涔熶細鎶婁笅涓€涓笉寰椾笉瀵硅繖浜涚被榪涜鎿嶄綔鐨勫紑鍙戜漢鍛樺紕緋婃秱銆?
瑕佸鏌愪釜 Java 鍏冪礌榪涜閲嶅懡鍚嶏紝鍙渶瑕佺畝鍗曞湴浠?Package Explorer 瑙嗗浘涓偣鍑昏繖涓厓绱狅紝鎴栬€呬粠Java 婧愪唬鐮佹枃浠朵腑閫変腑榪欎釜鍏冪礌錛岀劧鍚庨€夋嫨鑿滃崟欏?Refactor > Rename銆傚湪瀵硅瘽妗嗕腑杈撳叆鏂扮殑鍚嶇О錛岀劧鍚庨€夋嫨鏄惁闇€瑕?Eclipse 涔熸敼鍙樺榪欎釜鍚嶇О鐨勫紩鐢ㄣ€傚疄闄呮樉紺哄嚭鏉ョ殑紜垏鍐呭涓庢偍鎵€閫夊厓绱犵殑綾誨瀷鏈夊叧銆傛瘮鏂硅錛屽鏋滈€夋嫨鐨勫睘鎬у叿鏈?getter 鍜?setter 鏂規硶錛岄偅涔堜篃灝卞彲浠ュ悓鏃舵洿鏂拌繖浜涙柟娉曠殑鍚嶇О錛屼互鍙嶆槧鏂扮殑灞炴€с€傚浘1鏄劇ず浜嗕竴涓畝鍗曠殑渚嬪瓙銆?
灝卞儚鎵€鏈夌殑 Eclipse 閲嶆瀯鎿嶄綔涓€鏍鳳紝褰撴偍鎸囧畾浜嗗叏閮ㄧ敤鏉ユ墽琛岄噸鏋勭殑蹇呰淇℃伅涔嬪悗錛屾偍灝卞彲浠ョ偣鍑?Preview 鎸夐挳錛岀劧鍚庡湪涓€涓璇濇涓姣?Eclipse 鎵撶畻榪涜鍝簺鍙樻洿錛屾偍鍙互鍒嗗埆鍚﹀喅鎴栬€呯‘璁ゆ瘡涓€涓彈鍒板獎鍝嶇殑鏂囦歡涓殑姣忎竴欏瑰彉鏇淬€傚鏋滄偍瀵逛簬 Eclipse 姝g‘鎵ц鍙樻洿鐨勮兘鍔涙湁淇″績鐨勮瘽錛屾偍鍙互鍙寜涓?OK鎸夐挳銆傛樉鐒訛紝濡傛灉鎮ㄤ笉紜畾閲嶆瀯鍒板簳鍋氫簡浠€涔堜簨鎯咃紝鎮ㄥ氨浼氭兂鍏堥瑙堜竴涓嬶紝浣嗘槸瀵逛簬 Rename 鍜?Move 榪欐牱綆€鍗曠殑閲嶆瀯鑰岃█錛岄€氬父娌℃湁蹇呰棰勮銆?
Move 鎿嶄綔涓?Rename 鍗佸垎鐩鎬技錛氭偍閫夋嫨鏌愪釜 Java 鍏冪礌錛堥€氬父鏄竴涓被錛夛紝涓哄叾鎸囧畾涓€涓柊浣嶇疆錛屽茍瀹氫箟鏄惁闇€瑕佹洿鏂板紩鐢ㄣ€傜劧鍚庯紝鎮ㄥ彲浠ラ€夋嫨 Preview媯€鏌ュ彉鏇存儏鍐碉紝鎴栬€呴€夋嫨 OK 绔嬪嵆鎵ц閲嶆瀯錛屽鍥?鎵€紺恒€?
鍦ㄦ煇浜涘鉤鍙頒笂錛堢壒鍒槸 Windows錛夛紝鎮ㄨ繕鍙互鍦?Package Explorer 瑙嗗浘涓€氳繃綆€鍗曟嫋鏀劇殑鏂規硶灝嗙被浠庝竴涓寘鎴栬€呮枃浠跺す涓Щ鍒板彟涓€涓寘鎴栨枃浠跺す涓€傛墍鏈夌殑寮曠敤閮戒細鑷姩鏇存柊銆?/p>
Eclipse 涓湁澶ч噺鐨勯噸鏋勫伐鍏鳳紝浣挎偍鑳藉鑷姩鏀瑰彉綾葷殑鍏崇郴銆傝繖浜涢噸鏋勫伐鍏峰茍娌℃湁 Eclipse 鎻愪緵鐨勫叾浠栧伐鍏烽偅涔堝父鐢紝浣嗘槸寰堟湁浠峰€鹼紝鍥犱負瀹冧滑鑳藉鎵ц闈炲父澶嶆潅鐨勪換鍔°€傚彲浠ヨ錛屽綋瀹冧滑鐢ㄥ緱涓婄殑鏃跺€欙紝灝變細闈炲父鏈夌敤銆?/p>
Convert Anonymous Class錛堣漿鎹㈠尶鍚嶇被錛夊拰 Convert Nested Type錛堣漿鎹㈠祵濂楃被錛夎繖涓ょ閲嶆瀯鏂規硶姣旇緝鐩鎬技錛屽畠浠兘灝嗘煇涓被浠庡叾褰撳墠鑼冨洿縐誨姩鍒板寘鍚繖涓被鐨勮寖鍥翠笂銆?/p>
鍖垮悕綾繪槸涓€縐嶈娉曢€熷啓鏍囪錛屼嬌鎮ㄨ兘澶熷湪闇€瑕佸疄鐜版煇涓娊璞$被鎴栬€呮帴鍙g殑鍦版柟鍒涘緩涓€涓被鐨勫疄渚嬶紝鑰屼笉闇€瑕佹樉寮忔彁渚涚被鐨勫悕縐般€傛瘮濡傚湪鍒涘緩鐢ㄦ埛鐣岄潰涓殑鐩戝惉鍣ㄦ椂錛屽氨緇忓父鐢ㄥ埌鍖垮悕綾匯€傚湪娓呭崟1涓紝鍋囪 Bag 鏄湪鍏朵粬鍦版柟瀹氫箟鐨勪竴涓帴鍙o紝鍏朵腑澹版槑浜嗕袱涓柟娉曪紝 get()
鍜?set()
銆?
public class BagExample { void processMessage(String msg) { Bag bag = new Bag() { Object o; public Object get() { return o; } public void set(Object o) { this.o = o; } }; bag.set(msg); MessagePipe pipe = new MessagePipe(); pipe.send(bag); } } |
褰撳尶鍚嶇被鍙樺緱寰堝ぇ錛屽叾涓殑浠g爜闅句互闃呰鐨勬椂鍊欙紝鎮ㄥ氨搴旇鑰冭檻灝嗚繖涓尶鍚嶇被鍙樻垚涓ユ牸鎰忎箟涓婄殑綾伙紱涓轟簡淇濇寔灝佽鎬э紙鎹㈠彞璇濊錛屽氨鏄皢瀹冮殣钘忚搗鏉ワ紝浣垮緱涓嶅繀鐭ラ亾瀹冪殑澶栭儴綾諱笉鐭ラ亾瀹冿級錛屾偍搴旇灝嗗叾鍙樻垚宓屽綾伙紝鑰屼笉鏄《綰х被銆傛偍鍙互鍦ㄨ繖涓尶鍚嶇被鐨勫唴閮ㄧ偣鍑伙紝鐒跺悗閫夋嫨 Refactor > Convert Anonymous Class to Nested 灝卞彲浠ヤ簡銆傚綋鍑虹幇紜瀵硅瘽妗嗙殑鏃跺€欙紝涓鴻繖涓被杈撳叆鍚嶇О錛屾瘮濡?BagImpl
錛岀劧鍚庨€夋嫨 Preview鎴栬€?OK銆傝繖鏍鳳紝浠g爜灝卞彉鎴愪簡濡傛竻鍗?鎵€紺虹殑鎯呭艦銆?
public class BagExample { private final class BagImpl implements Bag { Object o; public Object get() { return o; } public void set(Object o) { this.o = o; } } void processMessage(String msg) { Bag bag = new BagImpl(); bag.set(msg); MessagePipe pipe = new MessagePipe(); pipe.send(bag); } } |
褰撴偍鎯寵鍏朵粬鐨勭被浣跨敤鏌愪釜宓屽綾繪椂錛孋onvert Nested Type to Top Level 灝卞緢鏈夌敤浜嗐€傛瘮鏂硅錛屾偍鍙互鍦ㄤ竴涓被涓嬌鐢ㄥ€煎璞★紝灝卞儚涓婇潰鐨?BagImpl
綾婚偅鏍楓€傚鏋滄偍鍚庢潵鍙堝喅瀹氬簲璇ュ湪澶氫釜綾諱箣闂村叡浜繖涓暟鎹紝閭d箞閲嶆瀯鎿嶄綔灝辮兘浠庤繖涓祵濂楃被涓垱寤烘柊鐨勭被鏂囦歡銆傛偍鍙互鍦ㄦ簮浠g爜鏂囦歡涓珮浜€変腑綾誨悕縐幫紙鎴栬€呭湪 Outline 瑙嗗浘涓偣鍑葷被鐨勫悕縐幫級錛岀劧鍚庨€夋嫨 Refactor > Convert Nested Type to Top Level錛岃繖鏍峰氨瀹炵幇浜嗛噸鏋勩€?
榪欑閲嶆瀯瑕佹眰鎮ㄤ負瑁呭叆瀹炰緥鎻愪緵涓€涓悕瀛椼€傞噸鏋勫伐鍏蜂篃浼氭彁渚涘緩璁殑鍚嶇О錛屾瘮濡?example
錛屾偍鍙互鎺ュ彈榪欎釜鍚嶅瓧銆傝繖涓悕瀛楃殑鎰忔€濊繃涓€浼氬効灝辨竻妤氫簡銆傜偣鍑?OK 涔嬪悗錛屽灞傜被 BagExample
灝變細鍙樻垚娓呭崟3鎵€紺虹殑鏍峰瓙銆?
public class BagExample { void processMessage(String msg) { Bag bag = new BagImpl(this); bag.set(msg); MessagePipe pipe = new MessagePipe(); pipe.send(bag); } } |
璇鋒敞鎰忥紝褰撲竴涓被鏄祵濂楃被鐨勬椂鍊欙紝瀹冨彲浠ヨ闂叾澶栧眰綾葷殑鎴愬憳銆備負浜嗕繚鐣欒繖縐嶅姛鑳斤紝閲嶆瀯榪囩▼灝嗕竴涓鍏ョ被 BagExample 鐨勫疄渚嬫斁鍦ㄥ墠闈㈤偅涓祵濂楃被涓€傝繖灝辨槸涔嬪墠瑕佹眰鎮ㄨ緭鍏ュ悕縐扮殑瀹炰緥鍙橀噺銆傚悓鏃朵篃鍒涘緩浜嗙敤浜庤緗繖涓疄渚嬪彉閲忕殑鏋勯€犲嚱鏁般€傞噸鏋勮繃紼嬪垱寤虹殑鏂扮被 BagImpl 濡傛竻鍗?鎵€紺恒€?
final class BagImpl implements Bag { private final BagExample example; /** * @paramBagExample */ BagImpl(BagExample example) { this.example = example; // TODO Auto-generated constructor stub } Object o; public Object get() { return o; } public void set(Object o) { this.o = o; } } |
濡傛灉鎮ㄧ殑鎯呭喌涓庤繖涓緥瀛愮浉鍚岋紝涓嶉渶瑕佷繚鐣欏 BagExample
鐨勮闂紝鎮ㄤ篃鍙互寰堝畨鍏ㄥ湴鍒犻櫎榪欎釜瀹炰緥鍙橀噺涓庢瀯閫犲嚱鏁幫紝灝?BagExample
綾諱腑鐨勪唬鐮佹敼鎴愮己鐪佺殑鏃犲弬鏁版瀯閫犲嚱鏁般€?
榪樻湁涓や釜閲嶆瀯宸ュ叿錛孭ush Down 鍜?Pull Up錛屽垎鍒疄鐜板皢綾繪柟娉曟垨鑰呭睘鎬т粠涓€涓被縐誨姩鍒板叾瀛愮被鎴栫埗綾諱腑銆傚亣璁炬偍鏈変竴涓悕涓?Vehicle
鐨勬娊璞$被錛屽叾瀹氫箟濡傛竻鍗?鎵€紺恒€?
public abstract class Vehicle { protected int passengers; protected String motor; public int getPassengers() { return passengers; } public void setPassengers(int i) { passengers = i; } public String getMotor() { return motor; } public void setMotor(String string) { motor = string; } } |
鎮ㄨ繕鏈変竴涓?Vehicle
鐨勫瓙綾伙紝綾誨悕涓?Automobile
錛屽娓呭崟6鎵€紺恒€?
public class Automobile extends Vehicle { private String make; private String model; public String getMake() { return make; } public String getModel() { return model; } public void setMake(String string) { make = string; } public void setModel(String string) { model = string; } } |
璇鋒敞鎰忥紝 Vehicle
鏈変竴涓睘鎬ф槸 motor
銆傚鏋滄偍鐭ラ亾鎮ㄥ皢姘歌繙鍙鐞嗘苯杞︼紝閭d箞榪欐牱鍋氬氨濂戒簡錛涗絾鏄鏋滄偍涔熷厑璁稿嚭鐜板垝鑹囦箣綾葷殑涓滆タ錛岄偅涔堟偍灝遍渶瑕佸皢 motor
灞炴€т粠 Vehicle
綾諱笅鏀懼埌 Automobile
綾諱腑銆備負姝わ紝鎮ㄥ彲浠ュ湪 Outline 瑙嗗浘涓€夋嫨 motor
錛岀劧鍚庨€夋嫨 Refactor > Push Down銆?
Eclipse 榪樻槸鎸鴻仾鏄庣殑錛屽畠鐭ラ亾鎮ㄤ笉鍙兘鎬繪槸鍗曞崟縐誨姩鏌愪釜灞炴€ф湰韜紝鍥犳榪樻彁渚涗簡 Add Required 鎸夐挳錛屼笉榪囧湪 Eclipse 2.1 涓紝榪欎釜鍔熻兘騫朵笉鎬繪槸鑳芥紜湴宸ヤ綔銆傛偍闇€瑕侀獙璇佷竴涓嬶紝鐪嬫墍鏈変緷璧栦簬榪欎釜灞炴€х殑鏂規硶鏄惁閮芥帹鍒頒簡涓嬩竴灞傘€傚湪鏈緥涓紝榪欐牱鐨勬柟娉曟湁涓や釜錛屽嵆涓?motor
鐩鎬即鐨?getter 鍜?setter 鏂規硶錛屽鍥?鎵€紺恒€?
鍦ㄦ寜榪?OK鎸夐挳涔嬪悗錛?motor
灞炴€т互鍙?getMotor()
鍜?setMotor()
鏂規硶灝變細縐誨姩鍒?Automobile
綾諱腑銆傛竻鍗?鏄劇ず浜嗗湪榪涜浜嗚繖嬈¢噸鏋勪箣鍚?Automobile
綾葷殑鎯呭艦銆?
public class Automobile extends Vehicle { private String make; private String model; protected String motor; public String getMake() { return make; } public String getModel() { return model; } public void setMake(String string) { make = string; } public void setModel(String string) { model = string; } public String getMotor() { return motor; } public void setMotor(String string) { motor = string; } } |
Pull Up 閲嶆瀯涓?Push Down 鍑犱箮鐩稿悓錛屽綋鐒?Pull Up 鏄皢綾繪垚鍛樹粠涓€涓被涓Щ鍒板叾鐖剁被涓紝鑰屼笉鏄瓙綾諱腑銆傚鏋滄偍紼嶅悗鏀瑰彉涓繪剰錛屽喅瀹氳繕鏄妸 motor
縐誨洖鍒?Vehicle
綾諱腑錛岄偅涔堟偍涔熻灝變細鐢ㄥ埌榪欑閲嶆瀯銆傚悓鏍烽渶瑕佹彁閱掓偍錛屼竴瀹氳紜鎮ㄦ槸鍚﹂€夋嫨浜嗘墍鏈夊繀闇€鐨勬垚鍛樸€?
Automobile
綾諱腑鍏鋒湁鎴愬憳 motor錛岃繖鎰忓懗鐫€鎮ㄥ鏋滃垱寤哄彟涓€涓瓙綾伙紝姣旀柟璇?Bus
錛屾偍灝辮繕闇€瑕佸皢 motor
錛堝強鍏剁浉鍏蟲柟娉曪級鍔犲叆鍒?Bus
綾諱腑銆傛湁涓€縐嶆柟娉曞彲浠ヨ〃紺鴻繖縐嶅叧緋伙紝鍗沖垱寤轟竴涓悕涓?Motorized
鐨勬帴鍙o紝 Automobile
鍜?Bus
閮藉疄鐜拌繖涓帴鍙o紝浣嗘槸 RowBoat
涓嶅疄鐜般€?
鍒涘緩 Motorized
鎺ュ彛鏈€綆€鍗曠殑鏂規硶鏄湪 Automobile
涓婁嬌鐢?Extract Interface 閲嶆瀯銆備負姝わ紝鎮ㄥ彲浠ュ湪 Outline 瑙嗗浘涓€夋嫨 Automobile
錛岀劧鍚庝粠鑿滃崟涓€夋嫨 Refactor > Extract Interface銆傛偍鍙互鍦ㄥ脊鍑虹殑瀵硅瘽妗嗕腑閫夋嫨鎮ㄥ笇鏈涘湪鎺ュ彛涓寘鍚摢浜涙柟娉曪紝濡傚浘4鎵€紺恒€?
鐐瑰嚮 OK 涔嬪悗錛屾帴鍙e氨鍒涘緩濂戒簡錛屽娓呭崟8鎵€紺恒€?/p>
娓呭崟 8. Motorized 鎺ュ彛
public interface Motorized { public abstract String getMotor(); public abstract void setMotor(String string); } |
鍚屾椂錛?Automobile
鐨勭被澹版槑涔熷彉鎴愪簡涓嬮潰鐨勬牱瀛愶細
public class Automobile extends Vehicle implements Motorized |
鏈噸鏋勫伐鍏風被鍨嬩腑鏈€鍚庝竴涓槸 User Supertyp Where Possible銆傛兂璞′竴涓敤鏉ョ鐞嗘苯杞︾粏甯愮殑搴旂敤紼嬪簭銆傚畠鑷鑷崇粓閮戒嬌鐢?Automobile
綾誨瀷鐨勫璞°€傚鏋滄偍鎯沖鐞嗘墍鏈夌被鍨嬬殑浜ら€氬伐鍏鳳紝閭d箞鎮ㄥ氨鍙互鐢ㄨ繖縐嶉噸鏋勫皢鎵€鏈夊
Automobile
鐨勫紩鐢ㄩ兘鍙樻垚瀵?Vehicle 鐨勫紩鐢紙鍙傜湅鍥?錛夈€傚鏋滄偍鍦ㄤ唬鐮佷腑鐢?instanceof
鎿嶄綔鎵ц浜嗕換浣曠被鍨嬫鏌ョ殑璇濓紝鎮ㄥ皢闇€瑕佸喅瀹氬湪榪欎簺鍦版柟閫傜敤鐨勬槸鍘熷厛鐨勭被榪樻槸鐖剁被錛岀劧鍚庨€変腑絎竴涓€夐」“Use the selected supertype in 'instanceof' expressions”銆?
鍥?5. 灝?Automobile 鏀規垚鍏剁埗綾?Vehicle
浣跨敤鐖剁被鐨勯渶姹傚湪 Java 璇█涓粡甯稿嚭鐜幫紝鐗瑰埆鏄湪浣跨敤浜?Factory Method 妯″紡鐨勬儏鍐典笅銆傝繖縐嶆ā寮忕殑鍏稿瀷瀹炵幇鏂瑰紡鏄垱寤轟竴涓娊璞$被錛屽叾涓叿鏈夐潤鎬佹柟娉?create()
錛岃繖涓柟娉曡繑鍥炵殑鏄疄鐜頒簡榪欎釜鎶借薄綾葷殑涓€涓叿浣撳璞°€傚鏋滈渶鍒涘緩鐨勫叿浣撳璞$殑綾誨瀷渚濊禆浜庡疄鐜扮殑緇嗚妭錛岃€岃皟鐢ㄧ被瀵瑰疄鐜扮粏鑺傚茍涓嶆劅鍏磋叮鐨勬儏鍐典笅錛屽彲浠ヤ嬌鐢ㄨ繖涓€妯″紡銆?
鏈€澶т竴綾婚噸鏋勬槸瀹炵幇浜嗙被鍐呴儴浠g爜閲嶇粍鐨勯噸鏋勬柟娉曘€傚湪鎵€鏈夌殑閲嶆瀯鏂規硶涓紝鍙湁榪欑被鏂規硶鍏佽鎮ㄥ紩鍏ユ垨鑰呯Щ闄や腑闂村彉閲忥紝鏍規嵁鍘熸湁鏂規硶涓殑閮ㄥ垎浠g爜鍒涘緩鏂版柟娉曪紝浠ュ強涓哄睘鎬у垱寤?getter 鍜?setter 鏂規硶銆?/p>
鏈変竴浜涢噸鏋勬柟娉曟槸浠?Extract 榪欎釜璇嶅紑澶寸殑錛欵xtract Method銆丒xtract Local Variable 浠ュ強Extract Constants銆傜涓€涓?Extract Method 鐨勬剰鎬濇偍鍙兘宸茬粡鐚滃埌浜嗭紝瀹冩牴鎹偍閫変腑鐨勪唬鐮佸垱寤烘柊鐨勬柟娉曘€傛垜浠互娓呭崟8涓偅涓被鐨?main()
鏂規硶涓轟緥銆傚畠棣栧厛鍙栧緱鍛戒護琛岄€夐」鐨勫€鹼紝濡傛灉鏈変互 -D 寮€澶寸殑閫夐」錛屽氨灝嗗叾浠ュ悕-鍊煎鐨勫艦寮忓瓨鍌ㄥ湪涓€涓?Properties
瀵硅薄涓€?
import java.util.Properties; import java.util.StringTokenizer; public class StartApp { public static void main(String[] args) { Properties props = new Properties(); for (int i= 0; i < args.length; i++) { if(args[i].startsWith("-D")) { String s = args[i].substring(2); StringTokenizer st = new StringTokenizer(s, "="); if(st.countTokens() == 2) { props.setProperty(st.nextToken(), st.nextToken()); } } } //continue... } } |
灝嗕竴閮ㄥ垎浠g爜浠庝竴涓柟娉曚腑鍙栧嚭騫舵斁榪涘彟涓€涓柟娉曚腑鐨勫師鍥犱富瑕佹湁涓ょ銆傜涓€縐嶅師鍥犳槸榪欎釜鏂規硶澶暱錛屽茍涓斿畬鎴愪簡涓や釜浠ヤ笂閫昏緫涓婃埅鐒朵笉鍚岀殑鎿嶄綔銆傦紙鎴戜滑涓嶇煡閬撲笂闈㈤偅涓?main()
鏂規硶榪樿澶勭悊鍝簺涓滆タ錛屼絾鏄粠鐜板湪鎺屾彙鐨勮瘉鎹潵鐪嬶紝榪欎笉鏄粠鍏朵腑鎻愬彇鍑轟竴涓柟娉曠殑鐞嗙敱銆傦級鍙︿竴縐嶅師鍥犳槸鏈変竴孌甸€昏緫涓婃竻鏅扮殑浠g爜錛岃繖孌典唬鐮佸彲浠ヨ鍏朵粬鏂規硶閲嶇敤銆傛瘮鏂硅鍦ㄦ煇浜涙椂鍊欙紝鎮ㄥ彂鐜拌嚜宸卞湪寰堝涓嶅悓鐨勬柟娉曚腑閮介噸澶嶇紪鍐欎簡鐩稿悓鐨勫嚑琛屼唬鐮併€傞偅灝辨湁鍙兘鏄渶瑕侀噸鏋勭殑鍘熷洜浜嗭紝涓嶈繃闄ら潪鐪熺殑闇€瑕侀噸鐢ㄨ繖閮ㄥ垎浠g爜錛屽惁鍒欐偍寰堝彲鑳藉茍涓嶄細鎵ц閲嶆瀯銆?
鍋囪鎮ㄨ繕闇€瑕佸湪鍙﹀涓€涓湴鏂硅В鏋愬悕-鍊煎錛屽茍灝嗗叾鏀懼湪 Properties
瀵硅薄涓紝閭d箞鎮ㄥ彲浠ュ皢鍖呭惈 StringTokenizer
澹版槑鍜屼笅闈㈢殑 if
璇彞鐨勮繖孌典唬鐮佹娊鍙栧嚭鏉ャ€備負姝わ紝鎮ㄥ彲浠ラ珮浜€変腑榪欐浠g爜錛岀劧鍚庝粠鑿滃崟涓€夋嫨 Refactor > Extract Method銆傛偍闇€瑕佽緭鍏ユ柟娉曞悕縐幫紝榪欓噷杈撳叆 addProperty
錛岀劧鍚庨獙璇佽繖涓柟娉曠殑涓や釜鍙傛暟錛?Properties prop
鍜?Strings
銆傛竻鍗?鏄劇ず鐢?Eclipse 鎻愬彇浜?addProp()
鏂規硶涔嬪悗綾葷殑鎯呭喌銆?
import java.util.Properties; import java.util.StringTokenizer; public class Extract { public static void main(String[] args) { Properties props = new Properties(); for (int i = 0; i < args.length; i++) { if (args[i].startsWith("-D")) { String s = args[i].substring(2); addProp(props, s); } } } private static void addProp(Properties props, String s) { StringTokenizer st = new StringTokenizer(s, "="); if (st.countTokens() == 2) { props.setProperty(st.nextToken(), st.nextToken()); } } } |
Extract Local Variable 閲嶆瀯鍙栧嚭涓€孌佃鐩存帴浣跨敤鐨勮〃杈懼紡錛岀劧鍚庡皢榪欎釜琛ㄨ揪寮忛鍏堣祴鍊肩粰涓€涓眬閮ㄥ彉閲忋€傜劧鍚庡湪鍘熷厛浣跨敤閭d釜琛ㄨ揪寮忕殑鍦版柟浣跨敤榪欎釜鍙橀噺銆傛瘮鏂硅錛屽湪涓婇潰鐨勬柟娉曚腑錛屾偍鍙互楂樹寒閫変腑瀵?st.nextToken()
鐨勭涓€嬈¤皟鐢紝鐒跺悗閫夋嫨 Refactor > Extract Local Variable銆傛偍灝嗚鎻愮ず杈撳叆涓€涓彉閲忓悕縐幫紝榪欓噷杈撳叆 key
銆傝娉ㄦ剰錛岃繖閲屾湁涓€涓皢琚€変腑琛ㄨ揪寮忔墍鏈夊嚭鐜扮殑鍦版柟閮芥浛鎹㈡垚鏂板彉閲忕殑寮曠敤鐨勯€夐」銆傝繖涓€夐」閫氬父鏄€傜敤鐨勶紝浣嗘槸瀵硅繖閲岀殑 nextToken()
鏂規硶涓嶉€傜敤錛屽洜涓鴻繖涓柟娉曪紙鏄劇劧錛夊湪姣忎竴嬈¤皟鐢ㄧ殑鏃跺€欓兘榪斿洖涓嶅悓鐨勫€箋€傜‘璁よ繖涓€夐」鏈閫変腑銆傚弬瑙佸浘6銆?
鍥?6. 涓嶅叏閮ㄦ浛鎹㈡墍閫夌殑琛ㄨ揪寮?/strong>
鎺ヤ笅鏉ワ紝鍦ㄧ浜屾璋冪敤 st.nextToken()
鐨勫湴鏂歸噸澶嶈繘琛岄噸鏋勶紝榪欎竴嬈¤皟鐢ㄧ殑鏄竴涓柊鐨勫眬閮ㄥ彉閲?value
銆傛竻鍗?0鏄劇ず浜嗚繖涓ゆ閲嶆瀯涔嬪悗浠g爜鐨勬儏褰€€?
private static void addProp(Properties props, String s) { StringTokenizer st = new StringTokenizer(s, "="); if(st.countTokens() == 2) { String key = st.nextToken(); String value = st.nextToken(); props.setProperty(key, value); } } |
鐢ㄨ繖縐嶆柟寮忓紩鍏ュ彉閲忔湁鍑犵偣濂藉銆傞鍏堬紝閫氳繃涓鴻〃杈懼紡鎻愪緵鏈夋剰涔夌殑鍚嶇О錛屽彲浠ヤ嬌寰椾唬鐮佹墽琛岀殑浠誨姟鏇村姞娓呮櫚銆傜浜岋紝浠g爜璋冭瘯鍙樺緱鏇村鏄擄紝鍥犱負鎴戜滑鍙互寰堝鏄撳湴媯€鏌ヨ〃杈懼紡榪斿洖鐨勫€箋€傛渶鍚庯紝鍦ㄥ彲浠ョ敤涓€涓彉閲忔浛鎹㈠悓涓€琛ㄨ揪寮忕殑澶氫釜瀹炰緥鐨勬儏鍐典笅錛屾晥鐜囧皢澶уぇ鎻愰珮銆?/p>
Extract Constant 涓?Extract Local Variable 鐩鎬技錛屼絾鏄偍蹇呴』閫夋嫨闈欐€佸父閲忚〃杈懼紡錛岄噸鏋勫伐鍏峰皢浼氭妸瀹冭漿鎹㈡垚闈欐€佺殑 final 甯擱噺銆傝繖鍦ㄥ皢紜紪鐮佺殑鏁板瓧鍜屽瓧絎︿覆浠庝唬鐮佷腑鍘婚櫎鐨勬椂鍊欓潪甯告湁鐢ㄣ€傛瘮鏂硅錛屽湪涓婇潰鐨勪唬鐮佷腑鎴戜滑鐢?#8220;-D”榪欎竴鍛戒護琛岄€夐」鏉ュ畾涔夊悕-鍊煎銆傚厛灝?#8220;-D”楂樹寒閫変腑錛岄€夋嫨 Refactor > Extract Constant錛岀劧鍚庤緭鍏?DEFINE 浣滀負甯擱噺鐨勫悕縐般€傞噸鏋勪箣鍚庣殑浠g爜濡傛竻鍗?1鎵€紺猴細
public class Extract { private static final String DEFINE = "-D"; public static void main(String[] args) { Properties props = new Properties(); for (int i = 0; i < args.length; i++) { if (args[i].startsWith(DEFINE)) { String s = args[i].substring(2); addProp(props, s); } } } // ... |
瀵逛簬姣忎竴縐?Extract... 綾葷殑閲嶆瀯錛岄兘瀛樺湪瀵瑰簲鐨?Inline... 閲嶆瀯錛屾墽琛屼笌涔嬬浉鍙嶇殑鎿嶄綔銆傛瘮鏂硅錛屽鏋滄偍楂樹寒閫変腑涓婇潰浠g爜涓殑鍙橀噺 s錛岄€夋嫨 Refactor > Inline...錛岀劧鍚庣偣鍑?OK錛孍clipse 灝變細鍦ㄨ皟鐢?addProp()
鐨勬椂鍊欑洿鎺ヤ嬌鐢?args[i].substring(2)
榪欎釜琛ㄨ揪寮忥紝濡備笅鎵€紺猴細
if(args[i].startsWith(DEFINE)) { addProp(props,args[i].substring(2)); } |
榪欐牱姣斾嬌鐢ㄤ復鏃跺彉閲忔晥鐜囨洿楂橈紝浠g爜涔熷彉寰楁洿鍔犵畝瑕侊紝鑷充簬榪欐牱鐨勪唬鐮佹槸鏄撹榪樻槸鍚販錛屽氨鍙栧喅浜庢偍鐨勮鐐逛簡銆備笉榪囦竴鑸鏉ワ紝榪欐牱鐨勫唴宓岄噸鏋勬病浠€涔堝€煎緱鎺ㄨ崘鐨勫湴鏂廣€?/p>
鎮ㄥ彲浠ユ寜鐓х敤鍐呭祵琛ㄨ揪寮忔浛鎹㈠彉閲忕殑鐩稿悓鏂規硶錛岄珮浜€変腑鏂規硶鍚嶏紝鎴栬€呴潤鎬?final 甯擱噺錛岀劧鍚庝粠鑿滃崟涓€夋嫨 Refactor > Inline...錛孍clipse 灝變細鐢ㄦ柟娉曠殑浠g爜鏇挎崲鏂規硶璋冪敤錛屾垨鑰呯敤甯擱噺鐨勫€兼浛鎹㈠甯擱噺鐨勫紩鐢ㄣ€?
閫氬父鎴戜滑璁や負灝嗗璞$殑鍐呴儴緇撴瀯鏆撮湶鍑烘潵鏄竴縐嶄笉濂界殑鍋氭硶銆傝繖涔熸鏄?Vehicle
綾誨強鍏跺瓙綾婚兘鍏鋒湁 private 鎴栬€?protected 灞炴€э紝鑰岀敤 public setter 鍜?getter 鏂規硶鏉ヨ闂睘鎬х殑鍘熷洜銆傝繖浜涙柟娉曞彲浠ョ敤涓ょ涓嶅悓鐨勬柟寮忚嚜鍔ㄧ敓鎴愩€?
絎竴縐嶇敓鎴愯繖浜涙柟娉曠殑鏂瑰紡鏄嬌鐢?Source > Generate Getter and Setter 鑿滃崟銆傝繖灝嗕細鏄劇ず涓€涓璇濇錛屽叾涓寘鍚墍鏈夊皻鏈瓨鍦ㄧ殑 getter 鍜?setter 鏂規硶銆備笉榪囧洜涓鴻繖縐嶆柟寮忔病鏈夌敤鏂版柟娉曟洿鏂板榪欎簺灞炴€х殑寮曠敤錛屾墍浠ュ茍涓嶇畻鏄噸鏋勶紱蹇呰鐨勬椂鍊欙紝鎮ㄥ繀欏昏嚜宸卞畬鎴愭洿鏂板紩鐢ㄧ殑宸ヤ綔銆傝繖縐嶆柟寮忓彲浠ヨ妭綰﹀緢澶氭椂闂達紝浣嗘槸鏈€濂芥槸鍦ㄤ竴寮€濮嬪垱寤虹被鐨勬椂鍊欙紝鎴栬€呮槸鍚戠被涓姞鍏ユ柊灞炴€х殑鏃跺€欎嬌鐢紝鍥犱負榪欎簺鏃跺€欒繕涓嶅瓨鍦ㄥ灞炴€х殑寮曠敤錛屾墍浠ヤ笉闇€瑕佸啀淇敼鍏朵粬浠g爜銆?
絎簩縐嶇敓鎴?getter 鍜?setter 鏂規硶鐨勬柟寮忔槸閫変腑鏌愪釜灞炴€э紝鐒跺悗浠庤彍鍗曚腑閫夋嫨 Refactor > Encapsulate Field銆傝繖縐嶆柟寮忎竴嬈″彧鑳戒負涓€涓睘鎬х敓鎴?getter 鍜?setter 鏂規硶錛屼笉榪囧畠涓?Source > Generate Getter and Setter 鐩稿弽錛屽彲浠ュ皢瀵硅繖涓睘鎬х殑寮曠敤鏀瑰彉鎴愬鏂版柟娉曠殑璋冪敤銆?
渚嬪錛屾垜浠彲浠ュ厛鍒涘緩涓€涓柊鐨勭畝鐗?Automobile
綾伙紝濡傛竻鍗?2鎵€紺恒€?
public class Automobile extends Vehicle { public String make; public String model; } |
鎺ヤ笅鏉ワ紝鍒涘緩涓€涓被瀹炰緥鍖栦簡 Automobile
鐨勭被錛屽茍鐩存帴璁塊棶 make
灞炴€э紝濡傛竻鍗?3鎵€紺恒€?
public class AutomobileTest { public void race() { Automobilecar1 = new Automobile(); car1.make= "Austin Healy"; car1.model= "Sprite"; // ... } } |
鐜板湪灝佽 make
灞炴€с€傚厛楂樹寒閫変腑灞炴€у悕縐幫紝鐒跺悗閫夋嫨 Refactor > Encapsulate Field銆傚湪寮瑰嚭鐨勫璇濇涓緭鍏?getter 鍜?setter 鏂規硶鐨勫悕縐?#8212;—濡傛偍鎵€鏂欙紝緙虹渷鐨勬柟娉曞悕縐板垎鍒槸 getMake() 鍜?setMake()銆傛偍涔熷彲浠ラ€夋嫨涓庤繖涓睘鎬у鍦ㄥ悓涓€涓被涓殑鏂規硶鏄戶緇洿鎺ヨ闂灞炴€э紝榪樻槸鍍忓叾浠栫被閭f牱鏀圭敤榪欎簺璁塊棶鏂規硶銆傦紙鏈変竴浜涗漢闈炲父鍊懼悜浜庝嬌鐢ㄨ繖涓ょ鏂瑰紡鐨勬煇涓€縐嶏紝涓嶈繃紕板閥鍦ㄨ繖縐嶆儏鍐典笅鎮ㄩ€夋嫨鍝竴縐嶆柟寮忛兘娌℃湁鍖哄埆錛屽洜涓?Automobile
涓病鏈夊 make
灞炴€х殑寮曠敤銆傦級
鐐瑰嚮 OK涔嬪悗錛?Automobile 綾諱腑鐨?make
灞炴€у氨鍙樻垚浜嗙鏈夊睘鎬э紝涔熷悓鏃跺叿鏈変簡 getMake()
鍜?setMake()
鏂規硶銆?
>
public class Automobile extends Vehicle { private String make; public String model; public void setMake(String make) { this.make = make; } public String getMake() { return make; } } |
AutomobileTest
綾諱篃瑕佽繘琛屾洿鏂幫紝浠ヤ究浣跨敤鏂扮殑璁塊棶鏂規硶錛屽娓呭崟15鎵€紺恒€?
public class AutomobileTest { public void race() { Automobilecar1 = new Automobile(); car1.setMake("Austin Healy"); car1.model= "Sprite"; // ... } } |
鏈枃浠嬬粛鐨勬渶鍚庝竴涓噸鏋勬柟娉曚篃鏄渶闅句互浣跨敤鐨勬柟娉曪細Change Method Signature錛堟敼鍙樻柟娉曠殑絳懼悕錛夈€傝繖縐嶆柟娉曠殑鍔熻兘鏄捐€屾槗瑙?#8212;—鏀瑰彉鏂規硶鐨勫弬鏁般€佸彲瑙佹€т互鍙婅繑鍥炲€肩殑綾誨瀷銆傝€岃繘琛岃繖鏍風殑鏀瑰彉瀵逛簬璋冪敤榪欎釜鏂規硶鐨勫叾浠栨柟娉曟垨鑰呬唬鐮佷細浜х敓浠€涔堝獎鍝嶏紝灝變笉鏄偅涔堟樉鑰屾槗瑙佷簡銆傝繖涔堜篃娌℃湁浠€涔堥瓟鏂廣€傚鏋滀唬鐮佺殑鏀瑰彉鍦ㄨ閲嶆瀯鐨勬柟娉曞唴閮ㄥ紩鍙戜簡闂——鍙橀噺鏈畾涔夛紝鎴栬€呯被鍨嬩笉鍖歸厤——閲嶆瀯鎿嶄綔灝嗗榪欎簺闂榪涜鏍囪銆傛偍鍙互閫夋嫨鏄帴鍙楅噸鏋勶紝紼嶅悗鏀規榪欎簺闂錛岃繕鏄彇娑堥噸鏋勩€傚鏋滆繖縐嶉噸鏋勫湪鍏朵粬鐨勬柟娉曚腑寮曞彂闂錛屽氨鐩存帴蹇界暐榪欎簺闂錛屾偍蹇呴』鍦ㄩ噸鏋勪箣鍚庝翰鑷慨鏀廣€?/p>
涓烘緞娓呰繖涓€鐐癸紝鑰冭檻娓呭崟16涓垪鍑虹殑綾誨拰鏂規硶銆?/p>
娓呭崟 16. MethodSigExample 綾?/strong>
public class MethodSigExample
{
public int test(String s, int i)
{
int x = i + s.length();
return x;
}
}
涓婇潰榪欎釜綾諱腑鐨?test()
鏂規硶琚彟涓€涓被涓殑鏂規硶璋冪敤錛屽娓呭崟17鎵€紺恒€?
public void callTest() { MethodSigExample eg = new MethodSigExample(); int r = eg.test("hello", 10); } |
鍦ㄧ涓€涓被涓珮浜€変腑 test
錛岀劧鍚庨€夋嫨 Refactor > Change Method Signature銆傛偍灝嗙湅鍒板鍥?鎵€紺虹殑瀵硅瘽妗嗐€?
鍥?8. Change Method Signature 閫夐」
絎竴涓€夐」鏄敼鍙樿鏂規硶鐨勫彲瑙佹€с€傚湪鏈緥涓紝灝嗗叾鏀瑰彉涓?protected 鎴栬€?private錛岃繖鏍風浜屼釜綾葷殑 callTest()
鏂規硶灝變笉鑳借闂繖涓柟娉曚簡銆傦紙濡傛灉榪欎袱涓被鍦ㄤ笉鍚岀殑鍖呬腑錛屽皢璁塊棶鏂規硶璁句負緙虹渷鍊間篃浼氬紩璧瘋繖鏍風殑闂銆傦級 Eclipse 鍦ㄨ繘琛岄噸鏋勭殑鏃跺€欎笉浼氬皢榪欎簺闂鏍囧嚭錛屾偍鍙湁鑷繁閫夋嫨閫傚綋鐨勫€箋€?
涓嬮潰涓€涓€夐」鏄敼鍙樿繑鍥炲€肩被鍨嬨€傚鏋滃皢榪斿洖鍊兼敼涓?float
錛岃繖涓嶄細琚爣璁版垚閿欒錛屽洜涓?test()
鏂規硶榪斿洖璇彞涓殑 int
浼氳嚜鍔ㄨ漿鎹㈡垚 float
銆傚嵆渚垮姝わ紝鍦ㄧ浜屼釜綾葷殑 callTest()
鏂規硶涓篃浼氬紩璧烽棶棰橈紝鍥犱負 float
涓嶈兘杞崲鎴?int
銆傛偍闇€瑕佸皢 test()
鐨勮繑鍥炲€兼敼涓?int
錛屾垨鑰呮槸灝?callTest()
涓殑 r
鏀逛負 float
銆?
濡傛灉灝嗙涓€涓弬鏁扮殑綾誨瀷浠?String
鍙樻垚 int
錛岄偅涔堜篃寰楄€冭檻鐩稿悓鐨勯棶棰樸€傚湪閲嶆瀯鐨勮繃紼嬩腑榪欎簺闂灝嗕細琚爣鍑猴紝鍥犱負瀹冧滑浼氬湪琚噸鏋勭殑鏂規硶鍐呴儴寮曡搗闂錛?int
涓嶅叿鏈夋柟娉?length()
銆傜劧鑰屽鏋滃皢鍏跺彉鎴?StringBuffer
錛岄棶棰樺氨涓嶄細鏍囪鍑烘潵錛屽洜涓?StringBuffer
鐨勭‘鍏鋒湁鏂規硶 length()
銆傚綋鐒惰繖浼氬湪 callTest()
鏂規硶涓紩璧烽棶棰橈紝鍥犱負瀹冨湪璋冪敤 test()
鐨勬椂鍊欒繕鏄妸涓€涓?String
浼犻€掕繘鍘諱簡銆?
鍓嶉潰鎻愬埌榪囷紝鍦ㄩ噸鏋勫紩鍙戜簡闂鐨勬儏鍐典笅錛屼笉綆¢棶棰樻槸鍚﹁鏍囧嚭錛屾偍閮藉彲浠ヤ竴涓竴涓湴淇榪欎簺闂錛屼互緇х畫涓嬪幓銆傝繕鏈変竴縐嶆柟娉曪紝灝辨槸鍏堣淇敼榪欎簺閿欒銆傚鏋滄偍鎵撶畻鍒犻櫎涓嶅啀闇€瑕佺殑鍙傛暟 i
錛岄偅涔堝彲浠ュ厛浠庤榪涜閲嶆瀯鐨勬柟娉曚腑鍒犻櫎瀵瑰畠鐨勫紩鐢ㄣ€傝繖鏍峰垹闄ゅ弬鏁扮殑榪囩▼灝辨洿鍔犻『鍒╀簡銆?
鏈€鍚庝竴浠墮渶瑕佽В閲婄殑浜嬫儏鏄?Default Value 閫夐」銆傝繖涓€閫夐」鍊間粎閫傜敤浜庡皢鍙傛暟鍔犲叆鏂規硶絳懼悕涓殑鎯呭喌銆傛瘮鏂硅錛屽鏋滄垜浠姞鍏ヤ簡涓€涓被鍨嬩負 String
鐨勫弬鏁幫紝鍙傛暟鍚嶄負 n
錛屽叾緙虹渷鍊間負 world
錛岄偅涔堝湪 callTest()
鏂規硶涓皟鐢?test()
鐨勪唬鐮佸氨鍙樻垚涓嬮潰鐨勬牱瀛愶細
public void callTest() { MethodSigExample eg = new MethodSigExample(); int r = eg.test("hello", 10, "world"); } |
鍦ㄨ繖鍦烘湁鍏?Change Method Signature 閲嶆瀯鐨勭湅浼煎彲鎬曠殑璁ㄨ涓紝鎴戜滑騫舵病鏈夐殣钘忓叾涓殑闂錛屼絾鍗翠竴鐩存病鏈夋彁鍒幫紝榪欑閲嶆瀯鍏跺疄鏄潪甯稿己澶х殑宸ュ叿錛屽畠鍙互鑺傜害寰堝鏃墮棿錛岄€氬父鎮ㄥ繀欏昏繘琛屼粩緇嗙殑璁″垝鎵嶈兘鎴愬姛鍦頒嬌鐢ㄥ畠銆?/p>
鈶爌ackage com.sample //鍖呭悕錛屼笉鍙互涓庡叧閿瓧鍐茬獊
鈶mport com.sample.DroolsTest.Message;//鏈枃浠墮渶瑕佸鍏ョ殑綾?br />
鈶lobal java.util.List myGlobalList;//鍏ㄥ眬鍙橀噺
鈶?/瀹氫箟鍑芥暟浣?br />
function String hello(String name) {
return "Hello "+name+"!";
}
鈶ule "myRule"
no-loop true //鎵ц涓€嬈″悗錛屾槸鍚﹁兘琚啀嬈℃縺媧?br />
salience 100 //浼樺厛綰у埆
鈶hen
m : Message( status == Message.HELLO, message : message )
鈶hen
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
myGlobalList.add( "Hello World" );//浣跨敤global 鍙橀噺
System.out.println( hello( "Bob" ) );//璋冪敤瀹氫箟鍑芥暟
End
鈶爌ackage com.sample
鍖呭悕錛屼笉鍙互涓庡叧閿瓧鍐茬獊銆備竴涓寘閫氳繃鍚嶇О絀洪棿鎻忕粯錛岃繖鏍峰緢濂界殑淇濇寔浜嗕竴緇勮鍒欑殑鐙珛鎬с€?
鈶mport
鏍囪灝卞儚java涓殑鍚箟涓€鏍楓€傚浜庝換浣曡鐢ㄥ湪瑙勫垯涓殑瀵硅薄錛屼綘闇€瑕佹寚瀹氬畬鏁寸殑璺緞鍜岀被鍨嬪悕銆侱rools浠庡悓鍚嶇殑java鍖呬腑鑷姩瀵煎叆綾匯€?
鈶lobal
濡傛灉澶氫釜鍖呭畾涔変簡鍚屾牱鍚嶇О鐨勫叏灞€鍙橀噺錛屽畠浠繀欏諱嬌鐢ㄥ悓鏍風殑綾誨瀷錛屽茍涓斿叏閮ㄦ寚鍚戝悓涓€涓叏灞€鍊箋€傚叏閮ㄥ彉閲忛€氬父鐢ㄦ潵榪斿洖鏁版嵁錛岃幏寰楁彁渚涙暟鎹垨鏈嶅姟緇欒鍒欎嬌鐢ㄣ€備負浜嗕嬌鐢ㄥ叏灞€鍙橀噺錛屼綘蹇呴』錛?
鍦ㄨ鍒欐枃浠朵腑澹版槑鍏ㄥ眬鍙橀噺騫朵嬌鐢ㄥ畠錛屽錛?
global java.util.List myGlobalList;
rule "Using a global"
when
eval( true )
then
myGlobalList.add( "Hello World" );
end
鍦╳orking memory涓婅緗叏灞€鍙橀噺鐨勫€箋€傛渶濂芥槸鍦ㄥ皢fact鎻掑叆working memory涔嬪墠璁劇疆瀹屾墍鏈夊叏灞€鍙橀噺錛屽錛?
List list = new ArrayList();
WorkingMemory wm = rulebase.newStatefulSession();
wm.setGlobal( "myGlobalList", list );
鈶unction
鐩稿浜庢甯哥殑java綾伙紝鍑芥暟鏄湪浣犵殑瑙勫垯浠g爜涓斁緗璦€浠g爜鐨勬柟娉曘€傚畠浠笉鍙兘鍋氫換浣曡秴榪囦綘鍙互鍦ㄥ府鍔╃被錛堝湪java涓畾涔夛紝琚緗叆瑙勫垯鐨刉orking Memory涓殑綾伙級涓仛鍒扮殑浜嬫儏銆備嬌鐢ㄥ嚱鏁扮殑浼樼偣鏄彲浠ュ皢閫昏緫淇濆瓨鍦ㄤ竴涓湴鏂癸紝騫朵笖浣犲彲浠ュ湪闇€瑕佺殑鏃跺€欐敼鍙樺嚱鏁幫紙榪欐牱鍋氬悇鏈変紭緙虹偣錛夈€傚嚱鏁版渶澶х殑鐢ㄥ鏄瑙勫垯鐨勬帹璁猴紙then錛夐儴鍒嗕腑鐨勮涓烘墍璋冪敤錛岀壒鍒槸褰撲竴涓涓烘搷浣滈渶瑕佸弽澶嶈璋冪敤鏃訛紙灝嗗叕鐢ㄤ唬鐮佹娊鍙栧嚭鏉ユ垚涓轟竴涓嚱鏁幫級銆?
鈶ule 鍚嶇О鍙互鍦?#8220;”涓嬪彇浠諱綍鍚嶅瓧銆?
灞炴€у垪琛細
灞炴€?綾誨瀷 榛樿鍊?鍔熻兘鎻忚堪
no-loop Boolean false 璁劇疆no-loop涓簍rue鍙互闃繪璇ヨ鍒欒鍐嶆嬋€媧匯€?
salience integer 0 浼樺厛綰ф暟瀛楅珮鐨勮鍒欎細姣斾紭鍏堢駭浣庣殑瑙勫垯鍏堟墽琛屻€?
agenda-group String MAIN 鍙湁鍦ㄥ叿鏈夌劍鐐圭殑agenda group涓殑瑙勫垯鎵嶈兘澶熸縺鍙戙€?
auto-focus Boolean false 濡傛灉璇ヨ鍒欑鍚堟縺媧繪潯浠訛紝鍒欒瑙勫垯鎵€鍦╝genda-group鑷姩鑾峰緱鐒︾偣錛屽厑璁歌鍒欐縺鍙戙€?
activation-group String N/A 鍦ㄥ悓鍚峚ctivation-group涓殑瑙勫垯灝嗕互浜掓枼鐨勬柟寮忔縺鍙?
dialect String "java" or "mvel" 鎸囧畾鍦↙HS浠g爜琛ㄨ揪寮忔垨RHS浠g爜鍧椾腑浣跨敤鐨勮璦€銆?
date-effective String, 鍖呭惈鏃ユ湡/鏃墮棿瀹氫箟 N/A 瑙勫垯鍙兘鍦╠ate-effective鎸囧畾鐨勬棩鏈熷拰鏃墮棿涔嬪悗嬋€媧匯€?
date-exptires String, 鍖呭惈鏃ユ湡/鏃墮棿瀹氫箟 N/A 濡傛灉褰撳墠鏃墮棿鍦╠ate-expires鎸囧畾鐨勬椂闂翠箣鍚庯紝瑙勫垯涓嶈兘嬋€媧匯€?
duration long N/A 鎸囧嚭瑙勫垯灝嗗湪鎸囧畾鐨勪竴孌墊椂闂村悗嬋€鍙戯紝濡傛灉閭d釜鏃跺€欒鍒欑殑嬋€媧繪潯浠惰繕鏄浜巘rue鐨勬儏鍐典笅銆?
鈶?nbsp; LHS (when) 鏉′歡鍏冪礌
涓轟簡鑳藉寮曠敤鍖歸厤鐨勫璞★紝浣跨敤涓€涓ā寮忕粦瀹氬彉閲忓‘$c’銆傚彉閲忕殑鍓嶇紑浣跨敤鐨?鏄彲閫夌殑錛屼絾鏄湪澶嶆潅鐨勮鍒欎腑瀹冧細寰堟柟渚跨敤鏉ュ尯鍒彉閲忎笌瀛楁鐨勪笉鍚屻€?
$c : Cheese( type == "stilton", price < 10, age == "mature" )
&& 鍜寍| 綰︽潫榪炴帴絎?
Cheese( type == "stilton" && price < 10, age == "mature" )
Cheese( type == "stilton" || price < 10, age == "mature" )
絎竴涓湁涓や釜綰︽潫鑰岀浜屼釜緇勬湁涓€涓害鏉燂紝鍙互閫氳繃鍦嗘嫭鍙鋒潵鏀瑰彉姹傚€肩殑欏哄簭銆?
鍗曞€肩害鏉?
Matches 鎿嶄綔
Cheese( type matches "(Buffalo)?\S*Mozerella" )
Cheese( type not matches "(Buffulo)?\S*Mozerella" )
Contains 鎿嶄綔
CheeseCounter( cheeses contains "stilton" )
CheeseCounter( cheeses not contains "cheddar" )
memberof鎿嶄綔
CheeseCounter( cheese memberof $matureCheeses )
CheeseCounter( cheese not memberof $matureCheeses )
瀛楃涓茬害鏉?
瀛楃涓茬害鏉熸槸鏈€綆€鍗曠殑綰︽潫鏍煎紡錛屽皢瀛楁涓庢寚瀹氱殑瀛楃涓叉眰鍊鹼細鏁板€鹼紝鏃ユ湡錛宻tring鎴栬€卋oolean銆?
Cheese( quantity == 5 )
Cheese( bestBefore < "27-Oct-2007" )
Cheese( type == "stilton" )
Cheese( smelly == true )
緇戝畾鍙橀噺綰︽潫
鍙橀噺鍙互緇戝畾鍒癋act鍜屽畠浠殑瀛楁錛岀劧鍚庡湪鍚庨潰鐨勫瓧孌電害鏉熶腑浣跨敤銆傜粦瀹氬彉閲忚縐頒負澹版槑銆傛湁鏁堢殑鎿嶄綔絎︾敱琚害鏉熺殑瀛楁綾誨瀷鍐沖畾錛涘湪閭i噷浼氳繘琛屽己鍒惰漿鎹€€傜粦瀹氬彉閲忕害鏉熶嬌鐢?=='鎿嶄綔絎︼紝鍥犱負鑳藉浣跨敤hash绱㈠紩錛屽洜姝ゆ彁渚涢潪甯稿揩鐨勬墽琛岄€熷害銆?
Person( likes : favouriteCheese )
Cheese( type == likes )
榪斿洖鍊肩害鏉?
榪斿洖鍊肩害鏉熷彲浠ヤ嬌鐢ㄤ換浣曟湁鏁堢殑Java鍏冩暟鎹被鍨嬫垨瀵硅薄銆傝閬垮厤浣跨敤浠諱綍Drools鍏抽敭瀛椾綔涓哄0鏄庢爣璇嗐€傚湪榪斿洖鍊肩害鏉熶腑浣跨敤鐨勫嚱鏁板繀欏昏繑鍥為潤鎬佸父閲忥紙time constant錛夌粨鏋溿€備箣鍓嶅0鏄庣殑緇戝畾鍙互鐢ㄥ湪琛ㄨ揪寮忎腑銆?
Person( girlAge : age, sex == "F" )
Person( age == ( girlAge + 2) ), sex == 'M' )
澶嶅悎鍊肩害鏉?
澶嶅悎鍊肩害鏉熺敤鍦ㄥ彲鑳芥湁澶氫釜鍏佽鍊肩殑鏃跺€欙紝褰撳墠鍙敮鎸?in' 鍜?not in'涓や釜鎿嶄綔銆傝繖浜涙搷浣滀嬌鐢ㄥ渾鎷彿鍖呭惈鐢ㄩ€楀彿鍒嗗紑鐨勫€肩殑鍒楄〃錛屽畠鍙互鏄彉閲忥紝瀛楃涓詫紝榪斿洖鍊兼垨闄愬畾鏍囪瘑絎︺€?in' 鍜?not in'榪愮畻寮忓疄闄呬笂琚娉曞垎鏋愬櫒閲嶅啓鎴愬涓?= and ==緇勬垚鐨勫閲嶇害鏉熴€?
Person( $cheese : favouriteCheese )
Cheese( type in ( "stilton", "cheddar", $cheese )
澶氶噸綰︽潫
澶氶噸綰︽潫鍏佽浣犲涓€涓瓧孌甸€氳繃浣跨敤'&&' 鎴栬€?||'綰︽潫榪炴帴絎﹁繘琛屽涓害鏉熸潯浠剁殑鍒ゆ柇銆傚厑璁鎬嬌鐢ㄥ渾鎷彿鍒嗙粍錛屽畠浼氳榪欑綰︽潫鐪嬭搗鏉ユ洿鑷劧銆?
Person( age ( (> 30 && < 40) || (> 20 && < 25) ) )
Person( age > 30 && < 40 || location == "london" )
鍐呰仈鐨凟val綰︽潫
eval綰︽潫鍙互浣跨敤浠諱綍鏈夋晥鐨勮璦€琛ㄨ揪寮忥紝鍙瀹冩渶緇堣兘琚眰鍊間負boolean鍏冩暟鎹被鍨嬨€傝〃杈懼紡蹇呴』鏄潤鎬佸父閲忥紙time constant錛夈€備換浣曞湪褰撳墠妯″紡涔嬪墠瀹氫箟鐨勫彉閲忛兘鍙互浣跨敤錛岃嚜鍔ㄤ唬鍏ワ紙autovivification錛夋満鍒剁敤鏉ヨ嚜鍔ㄥ緩绔嬪瓧孌電粦瀹氬彉閲忋€傚綋鏋勫緩鍣ㄥ彂鐜版爣璇嗕笉鏄綋鍓嶅畾涔夌殑鍙橀噺鍚嶆槸錛屽畠灝嗗皾璇曞皢瀹冧綔涓哄璞$殑瀛楁鏉ヨ闂紝榪欑鎯呭喌涓嬶紝鏋勫緩鍣ㄨ嚜鍔ㄥ湪inline-eval涓緩绔嬭瀛楁鐨勫悓鍚嶅彉閲忋€?
Person( girlAge : age, sex = "F" )
Person( eval( girlAge == boyAge + 2 ), sex = 'M' )
鈶HS (then) 鎵ц鎿嶄綔
榪欓儴鍒嗗簲褰撳寘鍚竴緋誨垪闇€瑕佹墽琛岀殑鎿嶄綔銆傝鍒欑殑RHS閮ㄥ垎搴旇淇濇寔綆€鐭殑錛岃繖淇濇寔瀹冩槸澹版槑鎬у拰鍙鎬х殑銆傚鏋滀綘鍙戠幇浣犻渶瑕佸湪RHS涓嬌鐢ㄥ懡浠ゅ紡鎴朼nd/or鏉′歡浠g爜錛岄偅浣犲彲鑳介渶瑕佸皢瑙勫垯鎷嗗垎涓哄涓鍒欍€俁HS鐨勪富瑕佺洰鐨勬槸鎻掑叆錛屽垹闄や慨鏀箇orking memory鏁版嵁銆?
"update(object, handle);" 灝嗗憡璇夊紩鎿庡璞″凡緇忔敼鍙橈紙宸茬粡琚粦瀹氬埌LHS涓殑閭d竴涓級錛屽茍涓旇鍒欓渶瑕侀噸鏂版鏌ャ€?
"insert(new Something());" 灝嗗湪working memory涓斁緗竴涓綘鏂板緩鐨勫璞°€?
"insertLogical(new Something());" 涓巌nsert綾諱技錛屼絾鏄綋娌℃湁鏇村鐨刦act鏀寔褰撳墠嬋€鍙戣鍒欑殑鐪熷€肩姸鎬佹椂錛屽璞¤嚜鍔ㄥ垹闄ゃ€?
"retract(handle);" removes an object from working memory.
鈶?Query
鏌ヨ涓粎浠呭寘鍚鍒橪HS閮ㄥ垎鐨勭粨鏋勶紙涓嶇敤鎸囧畾when鎴杢hen錛夈€傚畠鎻愪緵浜嗘煡璇orking memory 涓鍚堢害鏉熸潯浠剁殑瀵硅薄鐨勪竴涓畝鍗曞姙娉曘€?
query "people over the age of 30"
person : Person( age > 30 )
end
閫氳繃鍦ㄨ繑鍥炵殑鏌ヨ緇撴灉(QueryResults)涓婅繘琛屾爣鍑嗙殑for寰幆閬嶅巻錛屾瘡涓€琛屽皢榪斿洖涓€涓猀ueryResult錛岃瀵硅薄鍙互鐢ㄦ潵瀛樺彇緇勫厓涓殑姣忎竴涓狢olumn銆傝繖浜汣olumn鍙互閫氳繃澹版槑鐨勫悕縐版垨绱㈠紩浣嶇疆瀛樺彇銆?
QueryResults results = workingMemory.getQueryResults( "people over the age of 30" );
for ( Iterator it = results.iterator; it.hasNext(); ) {
QueryResult result = ( QueryResult ) it.next();
Person person = ( Person ) result.get( "person" );
}
org.guvnor.tools,5.0.1,file:plugins\org.guvnor.tools_5.0.1.jar,4,false
org.eclipse.webdav,3.0.101,file:plugins\org.eclipse.webdav_3.0.101.jar,4,false
org.drools.eclipse,5.0.1,file:plugins\org.drools.eclipse_5.0.1.jar,4,false
org.drools.eclipse.task,5.0.1,file:plugins\org.drools.eclipse.task_5.0.1.jar,4,false
杈撳嚭緇撴灉錛?br />
褰撳墠鏃墮棿 錛?009-03-19 21:03:48
鍓嶄竴騫?nbsp; 錛?008-03-19 21:03:48
鍓嶄竴涓湀 錛?009-02-19 21:02:48
鍓嶄竴涓槦鏈燂細2009-03-12 21:03:48
鍓嶄竴澶?nbsp; 錛?009-03-18 21:03:48
鍒嗘瀽錛?br />
娣卞叆GregorianCalendar涓殑add鏂規硶婧愮爜錛屼唬鐮佹瘮杈冮暱鎯崇爺絀剁殑鑷繁鐪嬫簮浠g爜銆?br />