杞澆鍦板潃錛?A >http://bjzhanghao.cnblogs.com/archive/2005/09/24/243312.html
鍘熸枃鍦板潃錛?A >http://www.eclipsezone.com/articles/what-is-iadaptable/
IAdaptable鍦‥clipse閲屾槸涓涓潪甯擱噸瑕佺殑鎺ュ彛銆傚浜嶦clipse寮鍙戣佹墜鏉ヨ錛屽畠灝卞儚寮傚父澶勭悊鍜屾娊璞$被涓鏍峰甯革紱浣嗘槸瀵規柊鎵嬭岃█錛屽畠鍗翠護浜烘劅鍒板洶鎯戝拰鐣忔儳銆傝繖綃囨枃绔犲皢鍚戜綘瑙i噴IAdaptable鍒板簳鏄粈涔堬紝浠ュ強瀹冨湪Eclipse閲岃搗鍒扮殑浣滅敤銆?/P>
Java鏄墍璋撶殑寮虹被鍨嬭璦錛屼篃灝辨槸璇達紝姣忎釜瀹炰緥閮藉搴斾竴涓被鍨嬨傚叾瀹炵被鍨嬪垎涓轟袱縐嶏細澹版槑綾誨瀷鍜岃繍琛屾椂綾誨瀷錛堜篃鍒嗗埆琚О涓洪潤鎬佺被鍨嬪拰鍔ㄦ佺被鍨嬶級銆傚儚Python榪欐牱鐨勫急綾誨瀷璇█甯歌縐頒負鏃犵被鍨嬬殑璇█錛屽叾瀹炰弗鏍艱鏉ヤ笉鏄繖鏍鳳紝鍥犱負姣忎釜瀹炰緥閮藉搴斾竴涓繍琛屾椂綾誨瀷錛屽彧鏄綘騫朵笉闇瑕佸0鏄庤繖涓鐐硅屽凡銆?/P>
鐜板湪鍥炲埌Java錛屼負浜嗚兘澶熸墽琛屼竴涓被鐨勬煇涓柟娉曪紝榪欎釜鏂規硶蹇呴』鍦ㄥ0鏄庣被鍨嬩腑鍙錛屾崲鍙ヨ瘽璇達紝鍗充嬌鍦ㄨ繍琛屾椂瀹炰緥鏄煇涓瓙綾誨瀷錛屼綘涔熷彧鑳芥墽琛岄偅浜涚埗綾誨瀷閲屽畾涔夌殑鏂規硶銆?/P>
濡傛灉涓瀹氳鎵ц鐗瑰畾綾誨瀷鐨勬柟娉曪紝鎴戜滑蹇呴』鍏堝己鍒惰漿鎹㈣繖涓疄渚嬪埌姝g‘鐨勭被鍨嬨傚浜庝笂闈㈢殑渚嬪瓙錛屾垜浠彲浠ュ皢list杞崲涓篈rrayList錛堣瘧娉細鍘熸枃In this case, we can cast ArrayList to List錛屾鐤戞槸絎旇錛夛紝鍥犱負ArrayList瀹炵幇浜哃ist鎺ュ彛錛屼綘鐢氳嚦鍙互鍦ㄨ繍琛屾椂閫氳繃instanceof鍏抽敭瀛楁楠宭ist鏄惁涓篈rrayList鐨勪竴涓疄渚嬨?/P>
涓嶅垢鐨勬槸錛屼竴涓被鍙兘騫舵病鏈夊疄鐜頒綘闇瑕佺殑鎺ュ彛錛岃繖鏍峰氨鏃犳硶榪涜寮哄埗綾誨瀷杞崲浜嗐傚師鍥犳湁寰堝錛屾瘮濡傚彧鍦ㄥ皯鏁版儏鍐典笅鎵嶉渶瑕佽繖涓帴鍙o紝鎴栬呬綘闇瑕佺殑鎺ュ彛鏄湪鍙︿竴涓笉鐩稿叧鐨勫簱閲岋紝鍙堟垨鑰呮帴鍙f槸鏈変簡綾諱互鍚庢墠寮鍙戝嚭鏉ョ殑錛岀瓑絳夈?/P>
榪欐椂浣犲氨闇瑕両Adaptable浜嗐傚彲浠ユ妸IAdaptable鎯寵薄涓轟竴涓兘澶熷姩鎬佽繘琛岀被鍨嬭漿鎹㈢殑閫斿緞銆傚姣斾笅闈㈢殑鐩存帴綾誨瀷杞崲錛?/P>
鎹竴縐嶆柟寮忥紝鎴戜滑鍙互榪欐牱鍋氾細
榪欏氨鏄笂闈㈡墍璇寸殑鍔ㄦ佺被鍨嬭漿鎹紝鎴戜滑鎵鍋氱殑浜嬫儏鏄瘯鍥炬妸adaptable杞崲涓轟竴涓狶ist瀹炰緥銆?/P>
閭d箞錛屽綋鍙互鐩存帴杞崲鐨勬椂鍊欎負浠涔堣璐硅繖涓姏姘旈氳繃getAdapter()鏉ヨ漿鎹㈠憿錛熷叾瀹炶繖縐嶆満鍒跺彲浠ヨ鎴戜滑灝嗙洰鏍囩被杞崲涓哄畠騫舵病鏈夊疄鐜扮殑鎺ュ彛銆備婦涓緥瀛愶紝鎴戜滑鍙兘鎯蟲妸涓涓狧ashMap褰撲綔List鏉ョ敤錛屽敖綆¤繖涓や釜綾葷殑鎬ц川騫朵笉鐩稿悓錛屽彲浠ヨ繖涔堝仛錛?/P>
澶ч儴鍒咺Adaptable鐨勫疄鐜版槸涓浜沬f璇彞鐨勫彔鍔狅紝姣斿鎴戜滑鐜板湪瑕佸疄鐜癏ashMap鐨刧etAdapter()鏂規硶錛屽畠鐪嬭搗鏉ュ彲鑳芥槸榪欐牱錛?/P>
鎵鍋氱殑灝辨槸榪斿洖涓涓傞厤鍣紙adapter錛屾洿紜垏鐨勮鏄竴涓壇鏈級錛岃屼笉鏄繘琛岀洿鎺ョ殑綾誨瀷杞崲銆傚鏋滃弬鏁扮被鍨嬫病鏈夎鏀寔錛屾儻渚嬫槸榪斿洖null鍊鹼紙鑰岄潪鎶涘嚭寮傚父錛夛紝浠h〃榪欎釜鏂規硶澶辮觸浜嗐傚洜姝わ紝鍦ㄨ皟鐢ㄨ繖涓柟娉曟椂錛屼笉搴旇鍋囧畾瀹冩繪槸榪斿洖闈瀗ull鍊箋?/P>
褰撶劧錛屽鏋滀綘甯屾湜澧炲姞涓涓柊鐨勮鏀寔鐨刟dapter綾誨瀷鏃跺繀欏葷紪杈戣繖涓被鎵嶈錛堣瘧娉細鍦╣etAdapter()閲屽鍔犳洿澶氱殑if璇彞錛夛紝榪欎細姣旇緝杈涜嫤銆傝屼笖錛屾棦鐒朵綘宸茬粡鐭ラ亾浜嗚繖涓被鍨嬶紝浣曚笉鐩存帴淇敼鎺ュ彛澹版槑鍛紵鍏跺疄鏈夊緢澶氬師鍥犱嬌寰椾綘騫朵笉甯屾湜鐩存帴緙栬緫榪欎釜綾伙紙渚嬪鏇村鏄撲繚鎸佸悜涓嬪吋瀹規э級錛屼篃涓嶆兂鏀瑰彉瀹冪殑綾誨瀷錛圚ashMap铏界劧涓嶆槸涓涓狶ist錛屼絾鍙互杞崲榪囧幓錛夈?/P>
Eclipse閫氳繃PlatformObject鎶借薄綾繪潵瑙e喅浠ヤ笂闂錛屽畠涓轟綘瀹炵幇浜咺Adaptable鎺ュ彛錛孍clipse騫沖彴錛圥latform錛夋彁渚涗簡IAdapterManager鐨勪竴涓疄鐜幫紝騫朵笖鍙互閫氳繃Platform.getAdapterManager()璁塊棶鍒幫紝瀹冩妸鎵鏈夊getAdapter()鐨勮姹傦紙璋冪敤錛夊鎵樼粰涓涓悕涓篒AdapterManager鐨勪笢瑗褲備綘鍙互灝嗗畠鎯寵薄涓轟竴涓法澶х殑淇濆瓨鐫綾誨拰adapter淇℃伅鐨凪ap錛岃孭latformObject鐨刧etAdapter()鏂規硶浼氭煡鎵捐繖涓狹ap銆?/P>
榪欐牱錛孭latformObject涓嶉渶瑕侀噸鏂扮紪璇戝氨鑳藉鏀寔鏂扮殑adapter綾誨瀷錛岃繖涓鐐瑰湪Eclipse閲岃澶ч噺浣跨敤浠ユ敮鎸亀orkspace鐨勬墿灞曠偣銆?/P>
鐜板湪鍋囪鎴戜滑鎯寵灝嗕竴涓彧鍖呭惈String綾誨瀷鍏冪礌鐨凩ist杞崲涓轟竴涓猉Ml鑺傜偣錛岃繖涓妭鐐圭殑鏍煎紡濡備笅錛?/P>
鍥犱負toString()鏂規硶鍙兘鏈夊叾浠栫敤閫旓紝鎴戜滑涓嶈兘閫氳繃瑕嗙洊toString()鏂規硶鏉ュ疄鐜拌繖涓姛鑳姐傛墍浠ワ紝鎴戜滑瑕佺粰List鍏寵仈涓涓伐鍘傜被浠ュ鐞哫ML鑺傜偣綾誨瀷鐨勯傞厤璇鋒眰銆傝綆$悊宸ュ巶綾婚渶瑕佷互涓嬩笁涓楠わ細
1銆佺敱List鐢熸垚涓涓狽ode錛屾垜浠妸榪欎釜杞崲榪囩▼鐢↖AdapterFactory鍖呰璧鋒潵錛?/P>
2銆佹妸榪欎釜宸ュ巶綾繪敞鍐屽埌Platform鐨凙dapterManager錛岃繖鏍峰綋鎴戜滑甯屾湜浠嶭ist鐨勫疄渚嬩腑鑾峰緱涓涓狽ode瀹炰緥鏃訛紝灝變細鎵懼埌鎴戜滑鐨勫伐鍘傜被銆傛敞鍐屼竴涓伐鍘傜被鐨勬柟寮忎篃寰堢畝鍗曪細
榪欐潯璇彞灝哊odeListFactory鍏寵仈鍒癓ist綾誨瀷銆傚綋浠嶭ist閲岃姹俛dapter鏃訛紝Platform鐨凙dapterManager浼氭壘鍒癗odeListFactory錛屽洜涓哄湪鍚庤呯殑getAdapterList()鏂規硶鐨勮繑鍥炵粨鏋滈噷鍖呭惈浜哊ode綾伙紝鎵浠ュ畠鐭ラ亾浠嶭ist瀹炰緥寰楀埌涓涓狽ode瀹炰緥鏄彲琛岀殑銆傚湪Eclipse閲岋紝榪欎釜娉ㄥ唽姝ラ涓鑸槸鍦╬lugin鍚姩鏃跺畬鎴愮殑錛屼絾涔熷彲浠ラ氳繃org.eclipse.core.runtime.adapters鎵╁睍鐐規潵瀹屾垚銆?/P>
3銆佷粠List鑾峰緱Node錛屼笅闈㈡槸渚嬪瓙浠g爜:
緇間笂鎵榪幫紝瑕佸湪榪愯鏃朵負涓涓凡鏈夌殑綾誨鍔犲姛鑳斤紝鎵瑕佸仛鐨勫彧鏄畾涔変竴涓敤鏉ヨ漿鎹㈢殑宸ュ巶綾伙紝鐒跺悗鎶婂畠娉ㄥ唽鍒癙latform鐨凙dapterManager鍗沖彲銆傝繖縐嶆柟寮忓湪淇濇寔UI緇勪歡鍜岄潪UI緇勪歡鐨勫垎紱繪柟闈㈢壒鍒湁鐢ㄣ備緥濡傚湪org.rcpapps.rcpnews.ui鍜宱rg.rcpapps.rcpnews榪欎袱涓猵lugin閲岋紝鍓嶈呯殑IPropertySource闇瑕佷笌鍚庤呯殑鏁版嵁瀵硅薄錛坉ata object錛夌浉鍏寵仈錛屽綋鍓嶈呭垵濮嬪寲鏃訛紝瀹冨皢IPropertySource娉ㄥ唽鍒癙latform錛屽綋鏁版嵁瀵硅薄鍦ㄥ鑸櫒錛坣avigator錛夐噷琚変腑鐨勬椂鍊欙紝灞炴ц鍥鵑噷灝變細鏄劇ず姝g‘鐨勫睘鎬с?/P>
鏄劇劧錛宩ava.util.List騫朵笉鏄疨latformObject鐨勫瓙綾伙紝鎵浠ュ鏋滀綘甯屾湜鑳藉緙栬瘧榪欓噷鎵璇寸殑渚嬪瓙錛屽繀欏誨緩绔嬩竴涓狶ist鐨勫瓙綾誨瀷銆傛敞鎰忥紝鍙互鐩存帴瀹炵幇IAdaptable鎺ュ彛錛岃岄潪蹇呴』緇ф壙PlatformObject鎶借薄綾匯?/P>
鏈鍚庯紝渚嬪瓙閲岀敓鎴怷ML鐨勯儴鍒嗕嬌鐢ㄤ簡XOM鐨勭被搴?