锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓轟粈涔堥噸鏋?
閲嶆瀯鏄寚鍦ㄤ笉鏀瑰彉紼嬪簭鍔熻兘鐨勫墠鎻愪笅鏀瑰彉鍏剁粨鏋勩傞噸鏋勬槸涓欏瑰姛鑳藉己澶х殑鎶鏈紝浣嗘槸鎵ц璧鋒潵闇瑕佸嶅姞灝忓績鎵嶈銆備富瑕佺殑鍗遍櫓鍦ㄤ簬鍙兘鍦ㄤ笉緇忔剰涓紩鍏ヤ竴浜涢敊璇紝灝ゅ叾鏄湪榪涜鎵嬪伐閲嶆瀯鐨勬椂鍊欐洿鏄姝ゃ傝繖縐嶅嵄闄╁紩鍙戜簡瀵歸噸鏋勬妧鏈殑鏅亶鎵硅瘎錛氬綋浠g爜涓嶄細(xì)宕╂簝鐨勬椂鍊欎負(fù)浠涔堣淇敼瀹冨憿錛?
鎮(zhèn)ㄩ渶瑕佽繘琛屼唬鐮侀噸鏋勭殑鍘熷洜鍙兘鏈変互涓嬪嚑涓細(xì)浼犺涓殑絎竴涓師鍥犳槸錛氶渶瑕佺戶鎵夸負(fù)鏌愪釜鍙よ佷駭鍝佽屽紑鍙戠殑騫翠唬涔呰繙鐨勪唬鐮侊紝鎴栬呯獊鐒剁鍒拌繖浜涗唬鐮併傛渶鍒濈殑寮鍙戝洟闃熷凡緇忎笉鍦ㄤ簡銆傛垜浠繀欏誨垱寤哄鍔犱簡鏂扮壒鎬х殑鏂扮増鏈蔣浠訛紝浣嗘槸榪欎簺浠g爜宸茬粡鏃犳硶鐞嗚В浜嗐傛柊鐨勫紑鍙戦槦浼嶅浠ョ戶鏃ュ湴宸ヤ綔錛岀牬璇戜唬鐮佺劧鍚庢槧灝勪唬鐮侊紝緇忚繃澶ч噺鐨勮鍒掍笌璁捐涔嬪悗錛屼漢浠皢榪欎簺浠g爜鍒嗗壊鎴愮鐗囥傚巻緇忛噸閲嶇(闅句箣鍚庯紝鎵鏈夎繖浜涗笢瑗塊兘鎸夌収鏂扮増鏈殑瑕佹眰褰掍綅浜嗐傝繖鏄嫳闆勮埇鐨勯噸鏋勬晠浜嬶紝鍑犱箮娌℃湁浜鴻兘鍦ㄧ粡鍘嗕簡榪欎簺涔嬪悗媧葷潃璁茶堪榪欐牱鐨勬晠浜嬨?/p>
榪樻湁涓縐嶇幇瀹炰竴浜涚殑鎯呭喌鏄」鐩腑鍔犲叆浜嗘柊鐨勯渶姹傦紝闇瑕佸璁捐榪涜淇敼銆傝嚦浜庢槸鍥犱負(fù)鍦ㄦ渶鍒濈殑瑙勫垝榪囩▼涓け瀵燂紝榪樻槸鐢變簬閲囩敤浜嗚凱浠e紡鐨勫紑鍙戣繃紼嬶紙姣斿鏁忔嵎寮鍙戯紝鎴栬呮槸嫻嬭瘯椹卞姩鐨勫紑鍙戯級(jí)鑰屽湪寮鍙戣繃紼嬩腑鏈夋剰寮曞叆闇姹傦紝榪欎袱鑰呭茍娌℃湁瀹炶川鎬х殑鍖哄埆銆傝繖鏍風(fēng)殑閲嶆瀯鐨勮妯¤灝忓緱澶氾紝鍏跺唴瀹逛竴鑸秹鍙?qiáng)閫氳繃寮曞叆鎺ュ彛鎴栬呮娊璞$被鏉ユ洿鏀圭被鐨勭戶鎵垮叧緋伙紝浠ュ強(qiáng)瀵圭被榪涜鍒嗗壊鍜岄噸鏂扮粍緇囷紝絳夌瓑銆?/p>
閲嶆瀯鐨勬渶鍚庝竴涓師鍥犳槸錛屽綋瀛樺湪鍙敤鐨勮嚜鍔ㄩ噸鏋勫伐鍏鋒椂錛屽彲浠ユ湁涓涓敤鏉ラ鍏堢敓鎴愪唬鐮佺殑蹇嵎鏂瑰紡——灝卞ソ姣斿湪鎮(zhèn)ㄦ棤娉曠‘瀹氬浣曟嫾鍐欐煇涓崟璇嶇殑鏃跺欙紝鍙互鐢ㄦ煇縐嶆嫾鍐欐鏌ュ伐鍏瘋緭鍏ヨ繖涓崟璇嶃傛瘮濡傝錛屾?zhèn)ㄥ彲浠ョ敤杩櫩U嶅鉤娣℃棤濂囩殑閲嶆瀯鏂規(guī)硶鐢熸垚 getter 鍜?setter 鏂規(guī)硶錛屼竴鏃︾啛鎮(zhèn)変簡榪欐牱鐨勫伐鍏鳳紝瀹冨氨鍙互涓烘?zhèn)ㄨ妭鐪佸緢澶氱殑鏃堕棿銆?/p>
Eclipse 鐨勯噸鏋勫伐鍏鋒棤鎰忚繘琛岃嫳闆勭駭鐨勯噸鏋?#8212;—閫傚悎榪欑瑙勬ā鐨勫伐鍏峰嚑涔庢病鏈?#8212;—浣嗘槸涓嶈鏄惁鐢ㄥ埌鏁忔嵎寮鍙戞妧鏈紝Eclipse 鐨勫伐鍏峰浜庝竴鑸▼搴忓憳淇敼浠g爜鐨勫伐浣滈兘鍏鋒湁鏃犳硶琛¢噺鐨勪環(huán)鍊箋傛瘯绔熶換浣曞鏉傜殑鎿嶄綔鍙鑳藉鑷姩榪涜錛屽氨鍙互涓嶉偅涔堢儲(chǔ)闂蜂簡銆傚彧瑕佹?zhèn)ㄧ煡閬?Eclipse 瀹炵幇浜嗕粈涔堟牱鐨勯噸鏋勫伐鍏鳳紝騫剁悊瑙d簡瀹冧滑鐨勯傜敤鎯呭喌錛屾?zhèn)ㄧ殑鐢熶骇鍔洖兗?xì)寰楀埌鏋佸ぇ鐨勬彁楂樸?/p>
瑕侀檷浣庡浠g爜閫犳垚鐮村潖鐨勯闄╋紝鏈変袱縐嶉噸瑕佺殑鏂規(guī)硶銆傜涓縐嶆柟娉曟槸瀵逛唬鐮佽繘琛屼竴濂楀畬鍏ㄥ交搴曠殑鍗曞厓嫻嬭瘯錛氬湪閲嶆瀯涔嬪墠鍜屼箣鍚庨兘蹇呴』閫氳繃榪欐牱鐨勬祴璇曘傜浜岀鏂規(guī)硶鏄嬌鐢ㄨ嚜鍔ㄥ寲鐨勫伐鍏鋒潵榪涜閲嶆瀯錛屾瘮濡傝 Eclipse 鐨勯噸鏋勭壒鎬с?/p>
灝嗗交搴曠殑嫻嬭瘯涓庤嚜鍔ㄥ寲閲嶆瀯緇撳悎璧鋒潵灝變細(xì)鏇村姞鏈夋晥浜嗭紝榪欐牱閲嶆瀯涔熷氨浠庝竴縐嶇縐樼殑鑹烘湳鍙樻垚浜嗘湁鐢ㄧ殑鏃ュ父宸ュ叿銆備負(fù)浜嗗鍔犳柊鐨勫姛鑳芥垨鑰呮敼榪涗唬鐮佺殑鍙淮鎶ゆэ紝鎴戜滑鍙互鍦ㄤ笉褰卞搷鍘熸湁浠g爜鍔熻兘鐨勫熀紜涓婅繀閫熶笖瀹夊叏鍦版敼鍙樺叾緇撴瀯銆傝繖縐嶈兘鍔涗細(xì)瀵規(guī)偍璁捐鍜屽紑鍙戜唬鐮佺殑鏂瑰紡浜х敓鏋佸ぇ鐨勫獎(jiǎng)鍝嶏紝鍗充究鏄?zhèn)ㄦ病鏈墳畣鍏毒l撳悎鍒版寮忕殑鏁忔嵎鏂規(guī)硶涓篃娌℃湁鍏崇郴銆?/p>
Eclipse 鐨勯噸鏋勫伐鍏峰彲浠ュ垎涓轟笁澶х被錛堜笅闈㈢殑欏哄簭涔熷氨鏄繖浜涘伐鍏峰湪 Refactoring 鑿滃崟涓嚭鐜扮殑欏哄簭錛夛細(xì)
榪樻湁鍑犱釜閲嶆瀯宸ュ叿騫朵笉鑳藉畬鍏ㄥ綊鍏ヨ繖涓変釜縐嶇被錛岀壒鍒槸 Change Method Signature錛屼笉榪囧湪鏈枃涓繕鏄皢榪欎釜宸ュ叿褰掑叆絎笁綾匯傞櫎浜嗚繖縐嶄緥澶栨儏鍐典互澶栵紝鏈枃涓嬮潰鍑犺妭閮芥槸鎸夌収涓婇潰鐨勯『搴忔潵璁ㄨ Eclipse 閲嶆瀯宸ュ叿鐨勩?/p>
鏄劇劧錛屾?zhèn)ㄥ嵆渚挎病鏈夌壒鍒殑宸ュ咗P紝涔熷彲浠ュ湪鏂囦歡緋葷粺涓噸鍛藉悕鏂囦歡鎴栬呮槸縐誨姩鏂囦歡錛屼絾鏄鏋滄搷浣滃璞℃槸 Java 婧愪唬鐮佹枃浠訛紝鎮(zhèn)ㄥ氨闇瑕佺紪杈戝緢澶氭枃浠訛紝鏇存柊鍏朵腑鐨?import
鎴?package
璇彞銆備笌姝ょ被浼鹼紝鐢ㄦ煇縐嶆枃鏈紪杈戝櫒鐨勬悳绱笌鏇挎崲鍔熻兘涔熷彲浠ュ緢瀹規(guī)槗鍦扮粰綾匯佹柟娉曞拰鍙橀噺閲嶆柊鍛藉悕錛屼絾鏄繖鏍峰仛鐨勬椂鍊欏繀欏誨崄鍒嗗皬蹇冿紝鍥犱負(fù)涓嶅悓鐨勭被鍙兘鍏鋒湁鍚嶇О鐩鎬技鐨勬柟娉曟垨鑰呭彉閲忥紱瑕佹槸浠庡ご鍒板熬媯(gè)鏌ラ」鐩腑鎵鏈夌殑鏂囦歡錛屾潵淇濊瘉姣忎釜涓滆タ鐨勬爣璇嗗拰淇敼鐨勬紜э紝閭e彲鐪熷涔忓懗鐨勩?
Eclipse 鐨?Rename 鍜?Move 宸ュ叿鑳藉鍗佸垎鑱槑鍦板湪鏁翠釜欏圭洰涓畬鎴愯繖鏍風(fēng)殑淇敼錛岃屼笉闇瑕佺敤鎴風(fēng)殑騫叉秹銆傝繖鏄洜涓?Eclipse 鍙互鐞嗚В浠g爜鐨勮涔夛紝浠庤岃兘澶熻瘑鍒嚭瀵規(guī)煇涓壒瀹氭柟娉曘佸彉閲忔垨鑰呯被鍚嶇О鐨勫紩鐢ㄣ傜畝鍖栬繖涓浠誨姟鏈夊姪浜庣‘淇濇柟娉曘佸彉閲忓拰綾葷殑鍚嶇О鑳藉娓呮櫚鍦版寚紺哄叾鐢ㄩ斻?/p>
鎴戜滑緇忓父鍙互鍙戠幇浠g爜鐨勫悕瀛椾笉鎭板綋鎴栬呬護(hù)浜哄鏄撹瑙o紝榪欐槸鍥犱負(fù)浠g爜涓庢渶鍒濊璁$殑鍔熻兘鏈夋墍涓嶅悓銆傛瘮鏂硅錛屾煇涓敤鏉ュ湪鏂囦歡涓煡鎵劇壒瀹氬崟璇嶇殑紼嬪簭涔熻浼?xì)鎵╁睍湄?fù)鍦?Web 欏甸潰涓氳繃 URL 鑾峰彇 InputStream
鐨勬搷浣溿傚鏋滆繖涓杈撳叆嫻佹渶鍒濆彨鍋?file
錛岄偅涔堝氨搴旇淇敼瀹冪殑鍚嶅瓧錛屼互渚胯兘鍙嶆槧鍏舵柊澧炵殑鏇村姞涓鑸殑鐗規(guī)э紝姣旀柟璇?sourceStream
銆傚紑鍙戜漢鍛樼粡甯告棤娉曟垚鍔熷湴淇敼榪欎簺鍚嶇О錛屽洜涓鴻繖涓繃紼嬫槸鍗佸垎娣蜂貢鍜屼箯鍛崇殑銆傝繖褰撶劧涔熶細(xì)鎶婁笅涓涓笉寰椾笉瀵硅繖浜涚被榪涜鎿嶄綔鐨勫紑鍙戜漢鍛樺紕緋婃秱銆?
瑕佸鏌愪釜 Java 鍏冪礌榪涜閲嶅懡鍚嶏紝鍙渶瑕佺畝鍗曞湴浠?Package Explorer 瑙嗗浘涓偣鍑昏繖涓厓绱狅紝鎴栬呬粠Java 婧愪唬鐮佹枃浠朵腑閫変腑榪欎釜鍏冪礌錛岀劧鍚庨夋嫨鑿滃崟欏?Refactor > Rename銆傚湪瀵硅瘽妗嗕腑杈撳叆鏂扮殑鍚嶇О錛岀劧鍚庨夋嫨鏄惁闇瑕?Eclipse 涔熸敼鍙樺榪欎釜鍚嶇О鐨勫紩鐢ㄣ傚疄闄呮樉紺哄嚭鏉ョ殑紜垏鍐呭涓庢?zhèn)ㄦ墍閫夊厓绱犵殑綾誨瀷鏈夊叧銆傛瘮鏂硅錛屽鏋滈夋嫨鐨勫睘鎬у叿鏈?getter 鍜?setter 鏂規(guī)硶錛岄偅涔堜篃灝卞彲浠ュ悓鏃舵洿鏂拌繖浜涙柟娉曠殑鍚嶇О錛屼互鍙嶆槧鏂扮殑灞炴с傚浘1鏄劇ず浜嗕竴涓畝鍗曠殑渚嬪瓙銆?
灝卞儚鎵鏈夌殑 Eclipse 閲嶆瀯鎿嶄綔涓鏍鳳紝褰撴?zhèn)ㄦ寚瀹氫簡鍏ㄩ儴鐢ㄦ潵鎵ц閲嶆瀯鐨勫繀瑕佷俊鎭箣鍚庡Q屾?zhèn)鍙互鐐瑰?Preview 鎸夐挳錛岀劧鍚庡湪涓涓璇濇涓姣?Eclipse 鎵撶畻榪涜鍝簺鍙樻洿錛屾?zhèn)ㄥ彲浠ュ垎鍒惁鍐虫垨鑰呯‘璁ゆ瘡涓涓彈鍒板獎(jiǎng)鍝嶇殑鏂囦歡涓殑姣忎竴欏瑰彉鏇淬傚鏋滄?zhèn)ㄥ浜?Eclipse 姝g‘鎵ц鍙樻洿鐨勮兘鍔涙湁淇″績鐨勮瘽錛屾?zhèn)ㄥ彲浠ュ彧鎸変?OK鎸夐挳銆傛樉鐒?dòng)灱屽鏋滄?zhèn)ㄤ笉紜畾閲嶆瀯鍒板簳鍋氫簡浠涔堜簨鎯咃紝鎮(zhèn)ㄥ氨浼?xì)鎯冲厛棰勮涓涓嬶紝浣嗘槸瀵逛簬 Rename 鍜?Move 榪欐牱綆鍗曠殑閲嶆瀯鑰岃█錛岄氬父娌℃湁蹇呰棰勮銆?
Move 鎿嶄綔涓?Rename 鍗佸垎鐩鎬技錛氭?zhèn)ㄩ夋嫨鏌愪釜 Java 鍏冪礌錛堥氬父鏄竴涓被錛夛紝涓哄叾鎸囧畾涓涓柊浣嶇疆錛屽茍瀹氫箟鏄惁闇瑕佹洿鏂板紩鐢ㄣ傜劧鍚庯紝鎮(zhèn)ㄥ彲浠ラ夋嫨 Preview媯(gè)鏌ュ彉鏇存儏鍐碉紝鎴栬呴夋嫨 OK 绔嬪嵆鎵ц閲嶆瀯錛屽鍥?鎵紺恒?
鍦ㄦ煇浜涘鉤鍙頒笂錛堢壒鍒槸 Windows錛夛紝鎮(zhèn)ㄨ繕鍙互鍦?Package Explorer 瑙嗗浘涓氳繃綆鍗曟嫋鏀劇殑鏂規(guī)硶灝嗙被浠庝竴涓寘鎴栬呮枃浠跺す涓Щ鍒板彟涓涓寘鎴栨枃浠跺す涓傛墍鏈夌殑寮曠敤閮戒細(xì)鑷姩鏇存柊銆?/p>
Eclipse 涓湁澶ч噺鐨勯噸鏋勫伐鍏鳳紝浣挎?zhèn)ㄨ兘澶熻嚜鍔ㄦ敼鍙樉c葷殑鍏崇郴銆傝繖浜涢噸鏋勫伐鍏峰茍娌℃湁 Eclipse 鎻愪緵鐨勫叾浠栧伐鍏烽偅涔堝父鐢紝浣嗘槸寰堟湁浠峰鹼紝鍥犱負(fù)瀹冧滑鑳藉鎵ц闈炲父澶嶆潅鐨勪換鍔°傚彲浠ヨ錛屽綋瀹冧滑鐢ㄥ緱涓婄殑鏃跺欙紝灝變細(xì)闈炲父鏈夌敤銆?/p>
Convert Anonymous Class錛堣漿鎹㈠尶鍚嶇被錛夊拰 Convert Nested Type錛堣漿鎹㈠祵濂楃被錛夎繖涓ょ閲嶆瀯鏂規(guī)硶姣旇緝鐩鎬技錛屽畠浠兘灝嗘煇涓被浠庡叾褰撳墠鑼冨洿縐誨姩鍒板寘鍚繖涓被鐨勮寖鍥翠笂銆?/p>
鍖垮悕綾繪槸涓縐嶈娉曢熷啓鏍囪錛屼嬌鎮(zhèn)ㄨ兘澶熷湪闇瑕佸疄鐜版煇涓娊璞$被鎴栬呮帴鍙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爜闅句互闃呰鐨勬椂鍊欙紝鎮(zhèn)ㄥ氨搴旇鑰冭檻灝嗚繖涓尶鍚嶇被鍙樻垚涓ユ牸鎰忎箟涓婄殑綾伙紱涓轟簡淇濇寔灝佽鎬э紙鎹㈠彞璇濊錛屽氨鏄皢瀹冮殣钘忚搗鏉ワ紝浣垮緱涓嶅繀鐭ラ亾瀹冪殑澶栭儴綾諱笉鐭ラ亾瀹冿級(jí)錛屾?zhèn)ㄥ簲璇畣鍏跺彉鎴愬祵濂椌c伙紝鑰屼笉鏄《綰х被銆傛?zhèn)ㄥ彲浠ュ湪杩欎釜鍖垮悕绫荤殑鍐呴儴鐐瑰嚮锛岀劧鍚庨夋嫨 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); } } |
褰撴?zhèn)ㄦ儗櫘╁叾浠栫殑绫讳娇鐢ㄦ煇涓祵濂椌c繪椂錛孋onvert Nested Type to Top Level 灝卞緢鏈夌敤浜嗐傛瘮鏂硅錛屾?zhèn)ㄥ彲浠ュ湪涓涓被涓嬌鐢ㄥ煎璞★紝灝卞儚涓婇潰鐨?BagImpl
綾婚偅鏍楓傚鏋滄?zhèn)ㄥ悗鏉ュ張鍐冲畾搴旇鍦ㄥ涓c諱箣闂村叡浜繖涓暟鎹紝閭d箞閲嶆瀯鎿嶄綔灝辮兘浠庤繖涓祵濂楃被涓垱寤烘柊鐨勭被鏂囦歡銆傛?zhèn)ㄥ彲浠ュ湪婧愪唬鐮佹枃錃g涓珮浜変腑綾誨悕縐幫紙鎴栬呭湪 Outline 瑙嗗浘涓偣鍑葷被鐨勫悕縐幫級(jí)錛岀劧鍚庨夋嫨 Refactor > Convert Nested Type to Top Level錛岃繖鏍峰氨瀹炵幇浜嗛噸鏋勩?
榪欑閲嶆瀯瑕佹眰鎮(zhèn)ㄤ負(fù)瑁呭叆瀹炰緥鎻愪緵涓涓悕瀛椼傞噸鏋勫伐鍏蜂篃浼?xì)鎻愪緵寰忚鐨勫悕绉板Q屾瘮濡?example
錛屾?zhèn)ㄥ彲浠ユ帴鍙棙q欎釜鍚嶅瓧銆傝繖涓悕瀛楃殑鎰忔濊繃涓浼?xì)鍎繛娓呮浜嗐傜偣鍑?OK 涔嬪悗錛屽灞傜被 BagExample
灝變細(xì)鍙樻垚娓呭崟3鎵紺虹殑鏍峰瓙銆?
public class BagExample { void processMessage(String msg) { Bag bag = new BagImpl(this); bag.set(msg); MessagePipe pipe = new MessagePipe(); pipe.send(bag); } } |
璇鋒敞鎰忥紝褰撲竴涓被鏄祵濂楃被鐨勬椂鍊欙紝瀹冨彲浠ヨ闂叾澶栧眰綾葷殑鎴愬憳銆備負(fù)浜嗕繚鐣欒繖縐嶅姛鑳斤紝閲嶆瀯榪囩▼灝嗕竴涓鍏ョ被 BagExample 鐨勫疄渚嬫斁鍦ㄥ墠闈㈤偅涓祵濂楃被涓傝繖灝辨槸涔嬪墠瑕佹眰鎮(zhèn)ㄨ緭鍏ュ悕縐扮殑瀹炰緥鍙橀噺銆傚悓鏃朵篃鍒涘緩浜嗙敤浜庤緗繖涓疄渚嬪彉閲忕殑鏋勯犲嚱鏁般傞噸鏋勮繃紼嬪垱寤虹殑鏂扮被 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; } } |
濡傛灉鎮(zhèn)ㄧ殑鎯呭喌涓庤繖涓緥瀛愮浉鍚岋紝涓嶉渶瑕佷繚鐣欏 BagExample
鐨勮闂紝鎮(zhèn)ㄤ篃鍙互寰堝畨鍏ㄥ湴鍒犻櫎榪欎釜瀹炰緥鍙橀噺涓庢瀯閫犲嚱鏁幫紝灝?BagExample
綾諱腑鐨勪唬鐮佹敼鎴愮己鐪佺殑鏃犲弬鏁版瀯閫犲嚱鏁般?
榪樻湁涓や釜閲嶆瀯宸ュ叿錛孭ush Down 鍜?Pull Up錛屽垎鍒疄鐜板皢綾繪柟娉曟垨鑰呭睘鎬т粠涓涓被縐誨姩鍒板叾瀛愮被鎴栫埗綾諱腑銆傚亣璁炬?zhèn)ㄦ湁涓涓悕涓?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; } } |
鎮(zhèn)ㄨ繕鏈変竴涓?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
銆傚鏋滄?zhèn)ㄧ煡閬撴?zhèn)ㄥ皢姘歌繙鍙鐞嗘苯杞︼紝閭d箞榪欐牱鍋氬氨濂戒簡錛涗絾鏄鏋滄?zhèn)ㄤ篃鍏佽鍑虹幇鍒掕墖涔嬀c葷殑涓滆タ錛岄偅涔堟?zhèn)闇瑕佸皢 motor
灞炴т粠 Vehicle
綾諱笅鏀懼埌 Automobile
綾諱腑銆備負(fù)姝わ紝鎮(zhèn)ㄥ彲浠ュ湪 Outline 瑙嗗浘涓夋嫨 motor
錛岀劧鍚庨夋嫨 Refactor > Push Down銆?
Eclipse 榪樻槸鎸鴻仾鏄庣殑錛屽畠鐭ラ亾鎮(zhèn)ㄤ笉鍙兘鎬繪槸鍗曞崟縐誨姩鏌愪釜灞炴ф湰韜紝鍥犳榪樻彁渚涗簡 Add Required 鎸夐挳錛屼笉榪囧湪 Eclipse 2.1 涓紝榪欎釜鍔熻兘騫朵笉鎬繪槸鑳芥紜湴宸ヤ綔銆傛?zhèn)ㄩ渶瑕侀獙璇佷竴涓嬶紝鐪嬫墍鏈変緷璧栦簬榪欎釜灞炴х殑鏂規(guī)硶鏄惁閮芥帹鍒頒簡涓嬩竴灞傘傚湪鏈緥涓紝榪欐牱鐨勬柟娉曟湁涓や釜錛屽嵆涓?motor
鐩鎬即鐨?getter 鍜?setter 鏂規(guī)硶錛屽鍥?鎵紺恒?
鍦ㄦ寜榪?OK鎸夐挳涔嬪悗錛?motor
灞炴т互鍙?getMotor()
鍜?setMotor()
鏂規(guī)硶灝變細(xì)縐誨姩鍒?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 鏄皢綾繪垚鍛樹粠涓涓被涓Щ鍒板叾鐖剁被涓紝鑰屼笉鏄瓙綾諱腑銆傚鏋滄?zhèn)ńE嶅悗鏀瑰彉涓繪剰錛屽喅瀹氳繕鏄妸 motor
縐誨洖鍒?Vehicle
綾諱腑錛岄偅涔堟?zhèn)ㄤ篃璁笧兗?xì)鐢ㄥ埌榪欑閲嶆瀯銆傚悓鏍烽渶瑕佹彁閱掓?zhèn)ㄥQ屼竴瀹氳紜鎮(zhèn)ㄦ槸鍚﹂夋嫨浜嗘墍鏈夊繀闇鐨勬垚鍛樸?
Automobile
綾諱腑鍏鋒湁鎴愬憳 motor錛岃繖鎰忓懗鐫鎮(zhèn)ㄥ鏋滃垱寤哄彟涓涓瓙綾伙紝姣旀柟璇?Bus
錛屾?zhèn)p繕闇瑕佸皢 motor
錛堝強(qiáng)鍏剁浉鍏蟲柟娉曪級(jí)鍔犲叆鍒?Bus
綾諱腑銆傛湁涓縐嶆柟娉曞彲浠ヨ〃紺鴻繖縐嶅叧緋伙紝鍗沖垱寤轟竴涓悕涓?Motorized
鐨勬帴鍙o紝 Automobile
鍜?Bus
閮藉疄鐜拌繖涓帴鍙o紝浣嗘槸 RowBoat
涓嶅疄鐜般?
鍒涘緩 Motorized
鎺ュ彛鏈綆鍗曠殑鏂規(guī)硶鏄湪 Automobile
涓婁嬌鐢?Extract Interface 閲嶆瀯銆備負(fù)姝わ紝鎮(zhèn)ㄥ彲浠ュ湪 Outline 瑙嗗浘涓夋嫨 Automobile
錛岀劧鍚庝粠鑿滃崟涓夋嫨 Refactor > Extract Interface銆傛?zhèn)ㄥ彲浠ュ湪寮瑰嚭鐨勫璇濇涓夋嫨鎮(zhèn)ㄥ笇鏈涘湪鎺ュ彛涓寘鍚摢浜涙柟娉曪紝濡傚浘4鎵紺恒?
鐐瑰嚮 OK 涔嬪悗錛屾帴鍙e氨鍒涘緩濂戒簡錛屽娓呭崟8鎵紺恒?/p>
娓呭崟 8. Motorized 鎺ュ彛
public interface Motorized { public abstract String getMotor(); public abstract void setMotor(String string); } |
鍚屾椂錛?Automobile
鐨勭被澹版槑涔熷彉鎴愪簡涓嬮潰鐨勬牱瀛愶細(xì)
public class Automobile extends Vehicle implements Motorized |
鏈噸鏋勫伐鍏風(fēng)被鍨嬩腑鏈鍚庝竴涓槸 User Supertyp Where Possible銆傛兂璞′竴涓敤鏉ョ鐞嗘苯杞︾粏甯愮殑搴旂敤紼嬪簭銆傚畠鑷鑷崇粓閮戒嬌鐢?Automobile
綾誨瀷鐨勫璞°傚鏋滄?zhèn)ㄦ儧_鐞嗘墍鏈夌被鍨嬬殑浜ら氬伐鍏鳳紝閭d箞鎮(zhèn)ㄥ氨鍙互鐢ㄨ繖縐嶉噸鏋勫皢鎵鏈夊
Automobile
鐨勫紩鐢ㄩ兘鍙樻垚瀵?Vehicle 鐨勫紩鐢紙鍙傜湅鍥?錛夈傚鏋滄?zhèn)ㄥ湪浠g爜涓?instanceof
鎿嶄綔鎵ц浜嗕換浣曠被鍨嬫鏌ョ殑璇濓紝鎮(zhèn)ㄥ皢闇瑕佸喅瀹氬湪榪欎簺鍦版柟閫傜敤鐨勬槸鍘熷厛鐨勭被榪樻槸鐖剁被錛岀劧鍚庨変腑絎竴涓夐」“Use the selected supertype in 'instanceof' expressions”銆?
鍥?5. 灝?Automobile 鏀規(guī)垚鍏剁埗綾?Vehicle
浣跨敤鐖剁被鐨勯渶姹傚湪 Java 璇█涓粡甯稿嚭鐜幫紝鐗瑰埆鏄湪浣跨敤浜?Factory Method 妯″紡鐨勬儏鍐典笅銆傝繖縐嶆ā寮忕殑鍏稿瀷瀹炵幇鏂瑰紡鏄垱寤轟竴涓娊璞$被錛屽叾涓叿鏈夐潤鎬佹柟娉?create()
錛岃繖涓柟娉曡繑鍥炵殑鏄疄鐜頒簡榪欎釜鎶借薄綾葷殑涓涓叿浣撳璞°傚鏋滈渶鍒涘緩鐨勫叿浣撳璞$殑綾誨瀷渚濊禆浜庡疄鐜扮殑緇嗚妭錛岃岃皟鐢ㄧ被瀵瑰疄鐜扮粏鑺傚茍涓嶆劅鍏磋叮鐨勬儏鍐典笅錛屽彲浠ヤ嬌鐢ㄨ繖涓妯″紡銆?
鏈澶т竴綾婚噸鏋勬槸瀹炵幇浜嗙被鍐呴儴浠g爜閲嶇粍鐨勯噸鏋勬柟娉曘傚湪鎵鏈夌殑閲嶆瀯鏂規(guī)硶涓紝鍙湁榪欑被鏂規(guī)硶鍏佽鎮(zhèn)ㄥ紩鍏ユ垨鑰呯Щ闄や腑闂村彉閲忥紝鏍規(guī)嵁鍘熸湁鏂規(guī)硶涓殑閮ㄥ垎浠g爜鍒涘緩鏂版柟娉曪紝浠ュ強(qiáng)涓哄睘鎬у垱寤?getter 鍜?setter 鏂規(guī)硶銆?/p>
鏈変竴浜涢噸鏋勬柟娉曟槸浠?Extract 榪欎釜璇嶅紑澶寸殑錛欵xtract Method銆丒xtract Local Variable 浠ュ強(qiáng)Extract Constants銆傜涓涓?Extract Method 鐨勬剰鎬濇?zhèn)ㄥ彲鑳藉凡缁忕寽鍒颁簡锛屽畠鏍规嵁鎮(zhèn)ㄩ変腑鐨勪唬鐮佸垱寤烘柊鐨勬柟娉曘傛垜浠互娓呭崟8涓偅涓被鐨?main()
鏂規(guī)硶涓轟緥銆傚畠棣栧厛鍙栧緱鍛戒護(hù)琛岄夐」鐨勫鹼紝濡傛灉鏈変互 -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爜浠庝竴涓柟娉曚腑鍙栧嚭騫舵斁榪涘彟涓涓柟娉曚腑鐨勫師鍥犱富瑕佹湁涓ょ銆傜涓縐嶅師鍥犳槸榪欎釜鏂規(guī)硶澶暱錛屽茍涓斿畬鎴愪簡涓や釜浠ヤ笂閫昏緫涓婃埅鐒朵笉鍚岀殑鎿嶄綔銆傦紙鎴戜滑涓嶇煡閬撲笂闈㈤偅涓?main()
鏂規(guī)硶榪樿澶勭悊鍝簺涓滆タ錛屼絾鏄粠鐜板湪鎺屾彙鐨勮瘉鎹潵鐪嬶紝榪欎笉鏄粠鍏朵腑鎻愬彇鍑轟竴涓柟娉曠殑鐞嗙敱銆傦級(jí)鍙︿竴縐嶅師鍥犳槸鏈変竴孌甸昏緫涓婃竻鏅扮殑浠g爜錛岃繖孌典唬鐮佸彲浠ヨ鍏朵粬鏂規(guī)硶閲嶇敤銆傛瘮鏂硅鍦ㄦ煇浜涙椂鍊欙紝鎮(zhèn)ㄥ彂鐜拌嚜宸卞湪寰堝涓嶅悓鐨勬柟娉曚腑閮介噸澶嶇紪鍐欎簡鐩稿悓鐨勫嚑琛屼唬鐮併傞偅灝辨湁鍙兘鏄渶瑕侀噸鏋勭殑鍘熷洜浜嗭紝涓嶈繃闄ら潪鐪熺殑闇瑕侀噸鐢ㄨ繖閮ㄥ垎浠g爜錛屽惁鍒欐?zhèn)ㄥ緢鍙兘迤堜笉浼?xì)鎵ц閲嶆瀯銆?
鍋囪鎮(zhèn)ㄨ繕闇瑕佸湪鍙﹀涓涓湴鏂硅В鏋愬悕-鍊煎錛屽茍灝嗗叾鏀懼湪 Properties
瀵硅薄涓紝閭d箞鎮(zhèn)ㄥ彲浠ュ皢鍖呭惈 StringTokenizer
澹版槑鍜屼笅闈㈢殑 if
璇彞鐨勮繖孌典唬鐮佹娊鍙栧嚭鏉ャ備負(fù)姝わ紝鎮(zhèn)ㄥ彲浠ラ珮浜変腑榪欐浠g爜錛岀劧鍚庝粠鑿滃崟涓夋嫨 Refactor > Extract Method銆傛?zhèn)ㄩ渶瑕佽緭鍏ユ柟娉曞悕縐幫紝榪欓噷杈撳叆 addProperty
錛岀劧鍚庨獙璇佽繖涓柟娉曠殑涓や釜鍙傛暟錛?Properties prop
鍜?Strings
銆傛竻鍗?鏄劇ず鐢?Eclipse 鎻愬彇浜?addProp()
鏂規(guī)硶涔嬪悗綾葷殑鎯呭喌銆?
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釜琛ㄨ揪寮忕殑鍦版柟浣跨敤榪欎釜鍙橀噺銆傛瘮鏂硅錛屽湪涓婇潰鐨勬柟娉曚腑錛屾?zhèn)ㄥ彲浠ラ珮浜変腑瀵?st.nextToken()
鐨勭涓嬈¤皟鐢紝鐒跺悗閫夋嫨 Refactor > Extract Local Variable銆傛?zhèn)畣琚彁绀鸿緭鍏ヤ竴涓彉閲忓悕縐幫紝榪欓噷杈撳叆 key
銆傝娉ㄦ剰錛岃繖閲屾湁涓涓皢琚変腑琛ㄨ揪寮忔墍鏈夊嚭鐜扮殑鍦版柟閮芥浛鎹㈡垚鏂板彉閲忕殑寮曠敤鐨勯夐」銆傝繖涓夐」閫氬父鏄傜敤鐨勶紝浣嗘槸瀵硅繖閲岀殑 nextToken()
鏂規(guī)硶涓嶉傜敤錛屽洜涓鴻繖涓柟娉曪紙鏄劇劧錛夊湪姣忎竴嬈¤皟鐢ㄧ殑鏃跺欓兘榪斿洖涓嶅悓鐨勫箋傜‘璁よ繖涓夐」鏈閫変腑銆傚弬瑙佸浘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爜璋冭瘯鍙樺緱鏇村鏄擄紝鍥犱負(fù)鎴戜滑鍙互寰堝鏄撳湴媯(gè)鏌ヨ〃杈懼紡榪斿洖鐨勫箋傛渶鍚庯紝鍦ㄥ彲浠ョ敤涓涓彉閲忔浛鎹㈠悓涓琛ㄨ揪寮忕殑澶氫釜瀹炰緥鐨勬儏鍐典笅錛屾晥鐜囧皢澶уぇ鎻愰珮銆?/p>
Extract Constant 涓?Extract Local Variable 鐩鎬技錛屼絾鏄?zhèn)ㄥ繀椤婚夋嫨闈欐佸父閲忚〃杈懼紡錛岄噸鏋勫伐鍏峰皢浼?xì)鎶婂畠铦{鎹㈡垚闈欐佺殑 final 甯擱噺銆傝繖鍦ㄥ皢紜紪鐮佺殑鏁板瓧鍜屽瓧絎︿覆浠庝唬鐮佷腑鍘婚櫎鐨勬椂鍊欓潪甯告湁鐢ㄣ傛瘮鏂硅錛屽湪涓婇潰鐨勪唬鐮佷腑鎴戜滑鐢?#8220;-D”榪欎竴鍛戒護(hù)琛岄夐」鏉ュ畾涔夊悕-鍊煎銆傚厛灝?#8220;-D”楂樹寒閫変腑錛岄夋嫨 Refactor > Extract Constant錛岀劧鍚庤緭鍏?DEFINE 浣滀負(fù)甯擱噺鐨勫悕縐般傞噸鏋勪箣鍚庣殑浠g爜濡傛竻鍗?1鎵紺猴細(xì)
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... 閲嶆瀯錛屾墽琛屼笌涔嬬浉鍙嶇殑鎿嶄綔銆傛瘮鏂硅錛屽鏋滄?zhèn)ㄩ珮浜変腑涓婇潰浠g爜涓殑鍙橀噺 s錛岄夋嫨 Refactor > Inline...錛岀劧鍚庣偣鍑?OK錛孍clipse 灝變細(xì)鍦ㄨ皟鐢?addProp()
鐨勬椂鍊欑洿鎺ヤ嬌鐢?args[i].substring(2)
榪欎釜琛ㄨ揪寮忥紝濡備笅鎵紺猴細(xì)
if(args[i].startsWith(DEFINE)) { addProp(props,args[i].substring(2)); } |
榪欐牱姣斾嬌鐢ㄤ復(fù)鏃跺彉閲忔晥鐜囨洿楂橈紝浠g爜涔熷彉寰楁洿鍔犵畝瑕侊紝鑷充簬榪欐牱鐨勪唬鐮佹槸鏄撹榪樻槸鍚販錛屽氨鍙栧喅浜庢?zhèn)ㄧ殑瑙傜偣浜嗐備笉榪囦竴鑸鏉ワ紝榪欐牱鐨勫唴宓岄噸鏋勬病浠涔堝煎緱鎺ㄨ崘鐨勫湴鏂廣?/p>
鎮(zhèn)ㄥ彲浠ユ寜鐓х敤鍐呭祵琛ㄨ揪寮忔浛鎹㈠彉閲忕殑鐩稿悓鏂規(guī)硶錛岄珮浜変腑鏂規(guī)硶鍚嶏紝鎴栬呴潤鎬?final 甯擱噺錛岀劧鍚庝粠鑿滃崟涓夋嫨 Refactor > Inline...錛孍clipse 灝變細(xì)鐢ㄦ柟娉曠殑浠g爜鏇挎崲鏂規(guī)硶璋冪敤錛屾垨鑰呯敤甯擱噺鐨勫兼浛鎹㈠甯擱噺鐨勫紩鐢ㄣ?
閫氬父鎴戜滑璁や負(fù)灝嗗璞$殑鍐呴儴緇撴瀯鏆撮湶鍑烘潵鏄竴縐嶄笉濂界殑鍋氭硶銆傝繖涔熸鏄?Vehicle
綾誨強(qiáng)鍏跺瓙綾婚兘鍏鋒湁 private 鎴栬?protected 灞炴э紝鑰岀敤 public setter 鍜?getter 鏂規(guī)硶鏉ヨ闂睘鎬х殑鍘熷洜銆傝繖浜涙柟娉曞彲浠ョ敤涓ょ涓嶅悓鐨勬柟寮忚嚜鍔ㄧ敓鎴愩?
絎竴縐嶇敓鎴愯繖浜涙柟娉曠殑鏂瑰紡鏄嬌鐢?Source > Generate Getter and Setter 鑿滃崟銆傝繖灝嗕細(xì)鏄劇ず涓涓璇濇錛屽叾涓寘鍚墍鏈夊皻鏈瓨鍦ㄧ殑 getter 鍜?setter 鏂規(guī)硶銆備笉榪囧洜涓鴻繖縐嶆柟寮忔病鏈夌敤鏂版柟娉曟洿鏂板榪欎簺灞炴х殑寮曠敤錛屾墍浠ュ茍涓嶇畻鏄噸鏋勶紱蹇呰鐨勬椂鍊欙紝鎮(zhèn)ㄥ繀欏昏嚜宸卞畬鎴愭洿鏂板紩鐢ㄧ殑宸ヤ綔銆傝繖縐嶆柟寮忓彲浠ヨ妭綰﹀緢澶氭椂闂達(dá)紝浣嗘槸鏈濂芥槸鍦ㄤ竴寮濮嬪垱寤虹被鐨勬椂鍊欙紝鎴栬呮槸鍚戠被涓姞鍏ユ柊灞炴х殑鏃跺欎嬌鐢紝鍥犱負(fù)榪欎簺鏃跺欒繕涓嶅瓨鍦ㄥ灞炴х殑寮曠敤錛屾墍浠ヤ笉闇瑕佸啀淇敼鍏朵粬浠g爜銆?
絎簩縐嶇敓鎴?getter 鍜?setter 鏂規(guī)硶鐨勬柟寮忔槸閫変腑鏌愪釜灞炴э紝鐒跺悗浠庤彍鍗曚腑閫夋嫨 Refactor > Encapsulate Field銆傝繖縐嶆柟寮忎竴嬈″彧鑳戒負(fù)涓涓睘鎬х敓鎴?getter 鍜?setter 鏂規(guī)硶錛屼笉榪囧畠涓?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 鏂規(guī)硶鐨勫悕縐?#8212;—濡傛?zhèn)ㄦ墍鏂欙紝緙虹渷鐨勬柟娉曞悕縐板垎鍒槸 getMake() 鍜?setMake()銆傛?zhèn)ㄤ篃鍙互閫夋嫨涓庤繖涓睘鎬у鍦ㄥ悓涓涓被涓殑鏂規(guī)硶鏄戶緇洿鎺ヨ闂灞炴э紝榪樻槸鍍忓叾浠栫被閭f牱鏀圭敤榪欎簺璁塊棶鏂規(guī)硶銆傦紙鏈変竴浜涗漢闈炲父鍊懼悜浜庝嬌鐢ㄨ繖涓ょ鏂瑰紡鐨勬煇涓縐嶏紝涓嶈繃紕板閥鍦ㄨ繖縐嶆儏鍐典笅鎮(zhèn)ㄩ夋嫨鍝竴縐嶆柟寮忛兘娌℃湁鍖哄埆錛屽洜涓?Automobile
涓病鏈夊 make
灞炴х殑寮曠敤銆傦級(jí)
鐐瑰嚮 OK涔嬪悗錛?Automobile 綾諱腑鐨?make
灞炴у氨鍙樻垚浜嗙鏈夊睘鎬э紝涔熷悓鏃跺叿鏈変簡 getMake()
鍜?setMake()
鏂規(guī)硶銆?
>
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
綾諱篃瑕佽繘琛屾洿鏂幫紝浠ヤ究浣跨敤鏂扮殑璁塊棶鏂規(guī)硶錛屽娓呭崟15鎵紺恒?
public class AutomobileTest { public void race() { Automobilecar1 = new Automobile(); car1.setMake("Austin Healy"); car1.model= "Sprite"; // ... } } |
鏈枃浠嬬粛鐨勬渶鍚庝竴涓噸鏋勬柟娉曚篃鏄渶闅句互浣跨敤鐨勬柟娉曪細(xì)Change Method Signature錛堟敼鍙樻柟娉曠殑絳懼悕錛夈傝繖縐嶆柟娉曠殑鍔熻兘鏄捐屾槗瑙?#8212;—鏀瑰彉鏂規(guī)硶鐨勫弬鏁般佸彲瑙佹т互鍙?qiáng)杩斿洖鍊肩殑綾誨瀷銆傝岃繘琛岃繖鏍風(fēng)殑鏀瑰彉瀵逛簬璋冪敤榪欎釜鏂規(guī)硶鐨勫叾浠栨柟娉曟垨鑰呬唬鐮佷細(xì)浜х敓浠涔堝獎(jiǎng)鍝嶏紝灝變笉鏄偅涔堟樉鑰屾槗瑙佷簡銆傝繖涔堜篃娌℃湁浠涔堥瓟鏂廣傚鏋滀唬鐮佺殑鏀瑰彉鍦ㄨ閲嶆瀯鐨勬柟娉曞唴閮ㄥ紩鍙戜簡闂——鍙橀噺鏈畾涔夛紝鎴栬呯被鍨嬩笉鍖歸厤——閲嶆瀯鎿嶄綔灝嗗榪欎簺闂榪涜鏍囪銆傛?zhèn)ㄥ彲浠ラ夋嫨鏄帴鍙楅噸鏋勶紝紼嶅悗鏀規(guī)榪欎簺闂錛岃繕鏄彇娑堥噸鏋勩傚鏋滆繖縐嶉噸鏋勫湪鍏朵粬鐨勬柟娉曚腑寮曞彂闂錛屽氨鐩存帴蹇界暐榪欎簺闂錛屾?zhèn)ㄥ繀椤诲湪閲嶆瀯涔嬪悗浜茶嚜淇攺V?/p>
涓烘緞娓呰繖涓鐐癸紝鑰冭檻娓呭崟16涓垪鍑虹殑綾誨拰鏂規(guī)硶銆?/p>
娓呭崟 16. MethodSigExample 綾?/strong>
public class MethodSigExample { public int test(String s, int i) { int x = i + s.length(); return x; } } |
涓婇潰榪欎釜綾諱腑鐨?test()
鏂規(guī)硶琚彟涓涓被涓殑鏂規(guī)硶璋冪敤錛屽娓呭崟17鎵紺恒?
public void callTest() { MethodSigExample eg = new MethodSigExample(); int r = eg.test("hello", 10); } |
鍦ㄧ涓涓被涓珮浜変腑 test
錛岀劧鍚庨夋嫨 Refactor > Change Method Signature銆傛?zhèn)畣鐪嬪埌濡傚?鎵紺虹殑瀵硅瘽妗嗐?
鍥?8. Change Method Signature 閫夐」
絎竴涓夐」鏄敼鍙樿鏂規(guī)硶鐨勫彲瑙佹с傚湪鏈緥涓紝灝嗗叾鏀瑰彉涓?protected 鎴栬?private錛岃繖鏍風(fēng)浜屼釜綾葷殑 callTest()
鏂規(guī)硶灝變笉鑳借闂繖涓柟娉曚簡銆傦紙濡傛灉榪欎袱涓被鍦ㄤ笉鍚岀殑鍖呬腑錛屽皢璁塊棶鏂規(guī)硶璁句負(fù)緙虹渷鍊間篃浼?xì)寮曡弹偪欐狅L(fēng)殑闂銆傦級(jí) Eclipse 鍦ㄨ繘琛岄噸鏋勭殑鏃跺欎笉浼?xì)灏啒q欎簺闂鏍囧嚭錛屾?zhèn)ㄥ彧鏈夎嚜宸遍夋嫨閫傚綋鐨勫箋?
涓嬮潰涓涓夐」鏄敼鍙樿繑鍥炲肩被鍨嬨傚鏋滃皢榪斿洖鍊兼敼涓?float
錛岃繖涓嶄細(xì)琚爣璁版垚閿欒錛屽洜涓?test()
鏂規(guī)硶榪斿洖璇彞涓殑 int
浼?xì)鑷姩铦{鎹㈡垚 float
銆傚嵆渚垮姝わ紝鍦ㄧ浜屼釜綾葷殑 callTest()
鏂規(guī)硶涓篃浼?xì)寮曡捣闂锛屽洜湄?fù) float
涓嶈兘杞崲鎴?int
銆傛?zhèn)ㄩ渶瑕佸皢 test()
鐨勮繑鍥炲兼敼涓?int
錛屾垨鑰呮槸灝?callTest()
涓殑 r
鏀逛負(fù) float
銆?
濡傛灉灝嗙涓涓弬鏁扮殑綾誨瀷浠?String
鍙樻垚 int
錛岄偅涔堜篃寰楄冭檻鐩稿悓鐨勯棶棰樸傚湪閲嶆瀯鐨勮繃紼嬩腑榪欎簺闂灝嗕細(xì)琚爣鍑猴紝鍥犱負(fù)瀹冧滑浼?xì)鍦ㄨ閲嶆瀯鐨勬栆?guī)硶鍐呴儴寮曡搗闂錛?int
涓嶅叿鏈夋柟娉?length()
銆傜劧鑰屽鏋滃皢鍏跺彉鎴?StringBuffer
錛岄棶棰樺氨涓嶄細(xì)鏍囪鍑烘潵錛屽洜涓?StringBuffer
鐨勭‘鍏鋒湁鏂規(guī)硶 length()
銆傚綋鐒惰繖浼?xì)鍦?callTest()
鏂規(guī)硶涓紩璧烽棶棰橈紝鍥犱負(fù)瀹冨湪璋冪敤 test()
鐨勬椂鍊欒繕鏄妸涓涓?String
浼犻掕繘鍘諱簡銆?
鍓嶉潰鎻愬埌榪囷紝鍦ㄩ噸鏋勫紩鍙戜簡闂鐨勬儏鍐典笅錛屼笉綆¢棶棰樻槸鍚﹁鏍囧嚭錛屾?zhèn)ㄩ兘鍙互涓涓竴涓湴淇榪欎簺闂錛屼互緇х畫涓嬪幓銆傝繕鏈変竴縐嶆柟娉曪紝灝辨槸鍏堣淇敼榪欎簺閿欒銆傚鏋滄?zhèn)ㄦ墦绠楀垹闄や笉鍐嶉渶瑕佺殑鍙傛暟 i
錛岄偅涔堝彲浠ュ厛浠庤榪涜閲嶆瀯鐨勬柟娉曚腑鍒犻櫎瀵瑰畠鐨勫紩鐢ㄣ傝繖鏍峰垹闄ゅ弬鏁扮殑榪囩▼灝辨洿鍔犻『鍒╀簡銆?
鏈鍚庝竴浠墮渶瑕佽В閲婄殑浜嬫儏鏄?Default Value 閫夐」銆傝繖涓閫夐」鍊間粎閫傜敤浜庡皢鍙傛暟鍔犲叆鏂規(guī)硶絳懼悕涓殑鎯呭喌銆傛瘮鏂硅錛屽鏋滄垜浠姞鍏ヤ簡涓涓被鍨嬩負(fù) String
鐨勫弬鏁幫紝鍙傛暟鍚嶄負(fù) n
錛屽叾緙虹渷鍊間負(fù) world
錛岄偅涔堝湪 callTest()
鏂規(guī)硶涓皟鐢?test()
鐨勪唬鐮佸氨鍙樻垚涓嬮潰鐨勬牱瀛愶細(xì)
public void callTest() { MethodSigExample eg = new MethodSigExample(); int r = eg.test("hello", 10, "world"); } |
鍦ㄨ繖鍦烘湁鍏?Change Method Signature 閲嶆瀯鐨勭湅浼煎彲鎬曠殑璁ㄨ涓紝鎴戜滑騫舵病鏈夐殣钘忓叾涓殑闂錛屼絾鍗翠竴鐩存病鏈夋彁鍒幫紝榪欑閲嶆瀯鍏跺疄鏄潪甯稿己澶х殑宸ュ叿錛屽畠鍙互鑺傜害寰堝鏃墮棿錛岄氬父鎮(zhèn)ㄥ繀欏昏繘琛屼粩緇嗙殑璁″垝鎵嶈兘鎴愬姛鍦頒嬌鐢ㄥ畠銆?/p>