锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久亚洲精品国产,亚洲va中文字幕无码久久不卡,亚洲宅男精品一区在线观看http://www.tkk7.com/yc1354/category/19678.htmlzh-cnThu, 18 Oct 2007 08:14:07 GMTThu, 18 Oct 2007 08:14:07 GMT60鍚屾synchornized鏂規(guī)硶涓庢柟娉曞潡http://www.tkk7.com/yc1354/archive/2007/10/16/153179.html璧墊案瓚?/dc:creator>璧墊案瓚?/author>Tue, 16 Oct 2007 02:43:00 GMThttp://www.tkk7.com/yc1354/archive/2007/10/16/153179.htmlhttp://www.tkk7.com/yc1354/comments/153179.htmlhttp://www.tkk7.com/yc1354/archive/2007/10/16/153179.html#Feedback0http://www.tkk7.com/yc1354/comments/commentRss/153179.htmlhttp://www.tkk7.com/yc1354/services/trackbacks/153179.html鎵撲釜姣旀柟錛氫竴涓猳bject灝卞儚涓涓ぇ鎴垮瓙錛屽ぇ闂ㄦ案榪滄墦寮銆傛埧瀛愰噷鏈夊緢澶氭埧闂達紙涔熷氨鏄柟娉曪級銆傝繖浜涙埧闂存湁涓婇攣鐨勶紙synchronized鏂規(guī)硶錛夛紝鍜屼笉涓婇攣涔嬪垎錛堟櫘閫氭柟娉曪級銆傛埧闂ㄥ彛鏀劇潃涓鎶婇挜鍖欙紙key錛夛紝榪欐妸閽ュ寵鍙互鎵撳紑鎵鏈変笂閿佺殑鎴塊棿銆傚彟澶栨垜鎶婃墍鏈夋兂璋冪敤璇ュ璞℃柟娉曠殑綰跨▼姣斿柣鎴愭兂榪涘叆榪欐埧瀛愭煇涓埧闂寸殑浜恒傛墍鏈夌殑涓滆タ灝辮繖涔堝浜嗭紝涓嬮潰鎴戜滑鐪嬬湅榪欎簺涓滆タ涔嬮棿濡備綍浣滅敤鐨勩?/p>

鍦ㄦ鎴戜滑鍏堟潵鏄庣‘涓涓嬫垜浠殑鍓嶆彁鏉′歡銆傝瀵硅薄鑷沖皯鏈変竴涓猻ynchronized鏂規(guī)硶錛屽惁鍒欒繖涓猭ey榪樻湁鍟ユ剰涔夈傚綋鐒朵篃灝變笉浼氭湁鎴戜滑鐨勮繖涓富棰樹簡銆?/p>

涓涓漢鎯寵繘鍏ユ煇闂翠笂浜嗛攣鐨勬埧闂達紝浠栨潵鍒版埧瀛愰棬鍙o紝鐪嬭閽ュ寵鍦ㄩ偅鍎匡紙璇存槑鏆傛椂榪樻病鏈夊叾浠栦漢瑕佷嬌鐢ㄤ笂閿佺殑鎴塊棿錛夈備簬鏄粬璧頒笂鍘繪嬁鍒頒簡閽ュ寵錛屽茍涓旀寜鐓ц嚜宸辯殑璁″垝浣跨敤閭d簺鎴塊棿銆傛敞鎰忎竴鐐癸紝浠栨瘡嬈′嬌鐢ㄥ畬涓嬈′笂閿佺殑鎴塊棿鍚庝細椹笂鎶婇挜鍖欒繕鍥炲幓銆傚嵆浣夸粬瑕佽繛緇嬌鐢ㄤ袱闂翠笂閿佺殑鎴塊棿錛屼腑闂翠粬涔熻鎶婇挜鍖欒繕鍥炲幓錛屽啀鍙栧洖鏉ャ?/p>

鍥犳錛屾櫘閫氭儏鍐典笅閽ュ寵鐨勪嬌鐢ㄥ師鍒欐槸錛?#8220;闅忕敤闅忓燂紝鐢ㄥ畬鍗寵繕銆?#8221;

榪欐椂鍏朵粬浜哄彲浠ヤ笉鍙楅檺鍒剁殑浣跨敤閭d簺涓嶄笂閿佺殑鎴塊棿錛屼竴涓漢鐢ㄤ竴闂村彲浠ワ紝涓や釜浜虹敤涓闂翠篃鍙互錛屾病闄愬埗銆備絾鏄鏋滃綋鏌愪釜浜烘兂瑕佽繘鍏ヤ笂閿佺殑鎴塊棿錛屼粬灝辮璺戝埌澶ч棬鍙e幓鐪嬬湅浜嗐傛湁閽ュ寵褰撶劧鎷夸簡灝辮蛋錛屾病鏈夌殑璇濓紝灝卞彧鑳界瓑浜嗐?/p>

瑕佹槸寰堝浜哄湪絳夎繖鎶婇挜鍖欙紝絳夐挜鍖欒繕鍥炴潵浠ュ悗錛岃皝浼氫紭鍏堝緱鍒伴挜鍖欙紵Not guaranteed銆傝薄鍓嶉潰渚嬪瓙閲岄偅涓兂榪炵畫浣跨敤涓や釜涓婇攣鎴塊棿鐨勫浼欙紝浠栦腑闂磋繕閽ュ寵鐨勬椂鍊欏鏋滆繕鏈夊叾浠栦漢鍦ㄧ瓑閽ュ寵錛岄偅涔堟病鏈変換浣曚繚璇佽繖瀹朵紮鑳藉啀嬈℃嬁鍒般傦紙JAVA瑙勮寖鍦ㄥ緢澶氬湴鏂歸兘鏄庣‘璇存槑涓嶄繚璇侊紝璞hread.sleep()浼戞伅鍚庡涔呬細榪斿洖榪愯錛岀浉鍚屼紭鍏堟潈鐨勭嚎紼嬮偅涓鍏堣鎵ц錛屽綋瑕佽闂璞$殑閿佽閲婃斁鍚庡浜庣瓑寰呮睜鐨勫涓嚎紼嬪摢涓細浼樺厛寰楀埌錛岀瓑絳夈傛垜鎯蟲渶緇堢殑鍐沖畾鏉冩槸鍦↗VM錛屼箣鎵浠ヤ笉淇濊瘉錛屽氨鏄洜涓篔VM鍦ㄥ仛鍑轟笂榪板喅瀹氱殑鏃跺欙紝緇濅笉鏄畝綆鍗曞崟鏍規(guī)嵁涓涓潯浠舵潵鍋氬嚭鍒ゆ柇錛岃屾槸鏍規(guī)嵁寰堝鏉°傝岀敱浜庡垽鏂潯浠跺お澶氾紝濡傛灉璇村嚭鏉ュ彲鑳戒細褰卞搷JAVA鐨勬帹騫匡紝涔熷彲鑳芥槸鍥犱負鐭ヨ瘑浜ф潈淇濇姢鐨勫師鍥犲惂銆係UN緇欎簡涓笉淇濊瘉灝辨販榪囧幓浜嗐傛棤鍙帤闈炪備絾鎴戠浉淇¤繖浜涗笉紜畾錛屽茍闈炲畬鍏ㄤ笉紜畾銆傚洜涓鴻綆楁満榪欎笢瑗挎湰韜氨鏄寜鎸囦護榪愯鐨勩傚嵆浣跨湅璧鋒潵寰堥殢鏈虹殑鐜拌薄錛屽叾瀹為兘鏄湁瑙勫緥鍙銆傚榪囪綆楁満鐨勯兘鐭ラ亾錛岃綆楁満閲岄殢鏈烘暟鐨勫鍚嶆槸浼殢鏈烘暟錛屾槸浜鴻繍鐢ㄤ竴瀹氱殑鏂規(guī)硶鍐欏嚭鏉ョ殑錛岀湅涓婂幓闅忔満緗簡銆傚彟澶栵紝鎴栬鏄洜涓鴻鎯沖紕鐨勭‘瀹氬お璐逛簨錛屼篃娌″澶ф剰涔夛紝鎵浠ヤ笉紜畾灝變笉紜畾浜嗗惂銆傦級

鍐嶆潵鐪嬬湅鍚屾浠g爜鍧椼傚拰鍚屾鏂規(guī)硶鏈夊皬灝忕殑涓嶅悓銆?/p>

1.浠庡昂瀵鎬笂璁詫紝鍚屾浠g爜鍧楁瘮鍚屾鏂規(guī)硶灝忋備綘鍙互鎶婂悓姝ヤ唬鐮佸潡鐪嬫垚鏄病涓婇攣鎴塊棿閲岀殑涓鍧楃敤甯﹂攣鐨勫睆椋庨殧寮鐨勭┖闂淬?/p>

2.鍚屾浠g爜鍧楄繕鍙互浜轟負鐨勬寚瀹氳幏寰楁煇涓叾瀹冨璞$殑key銆傚氨鍍忔槸鎸囧畾鐢ㄥ摢涓鎶婇挜鍖欐墠鑳藉紑榪欎釜灞忛鐨勯攣錛屼綘鍙互鐢ㄦ湰鎴跨殑閽ュ寵錛涗綘涔熷彲浠ユ寚瀹氱敤鍙︿竴涓埧瀛愮殑閽ュ寵鎵嶈兘寮錛岃繖鏍風殑璇濓紝浣犺璺戝埌鍙︿竴鏍嬫埧瀛愰偅鍎挎妸閭d釜閽ュ寵鎷挎潵錛屽茍鐢ㄩ偅涓埧瀛愮殑閽ュ寵鏉ユ墦寮榪欎釜鎴垮瓙鐨勫甫閿佺殑灞忛銆?/p>

璁頒綇浣犺幏寰楃殑閭e彟涓鏍嬫埧瀛愮殑閽ュ寵錛屽茍涓嶅獎鍝嶅叾浠栦漢榪涘叆閭f爧鎴垮瓙娌℃湁閿佺殑鎴塊棿銆?/p>

涓轟粈涔堣浣跨敤鍚屾浠g爜鍧楀憿錛熸垜鎯沖簲璇ユ槸榪欐牱鐨勶細棣栧厛瀵圭▼搴忔潵璁插悓姝ョ殑閮ㄥ垎寰堝獎鍝嶈繍琛屾晥鐜囷紝鑰屼竴涓柟娉曢氬父鏄厛鍒涘緩涓浜涘眬閮ㄥ彉閲忥紝鍐嶅榪欎簺鍙橀噺鍋氫竴浜涙搷浣滐紝濡傝繍綆楋紝鏄劇ず絳夌瓑錛涜屽悓姝ユ墍瑕嗙洊鐨勪唬鐮佽秺澶氾紝瀵規(guī)晥鐜囩殑褰卞搷灝辮秺涓ラ噸銆傚洜姝ゆ垜浠氬父灝介噺緙╁皬鍏跺獎鍝嶈寖鍥淬傚浣曞仛錛熷悓姝ヤ唬鐮佸潡銆傛垜浠彧鎶婁竴涓柟娉曚腑璇ュ悓姝ョ殑鍦版柟鍚屾錛屾瘮濡傝繍綆椼?/p>

鍙﹀錛屽悓姝ヤ唬鐮佸潡鍙互鎸囧畾閽ュ寵榪欎竴鐗圭偣鏈変釜棰濆鐨勫ソ澶勶紝鏄彲浠ュ湪涓瀹氭椂鏈熷唴闇稿崰鏌愪釜瀵硅薄鐨刱ey銆傝繕璁板緱鍓嶉潰璇磋繃鏅氭儏鍐典笅閽ュ寵鐨勪嬌鐢ㄥ師鍒欏悧銆傜幇鍦ㄤ笉鏄櫘閫氭儏鍐典簡銆備綘鎵鍙栧緱鐨勯偅鎶婇挜鍖欎笉鏄案榪滀笉榪橈紝鑰屾槸鍦ㄩ鍑哄悓姝ヤ唬鐮佸潡鏃舵墠榪樸?/p>

榪樼敤鍓嶉潰閭d釜鎯寵繛緇敤涓や釜涓婇攣鎴塊棿鐨勫浼欐墦姣旀柟銆傛庢牱鎵嶈兘鍦ㄧ敤瀹屼竴闂翠互鍚庯紝緇х畫浣跨敤鍙︿竴闂村憿銆傜敤鍚屾浠g爜鍧楀惂銆傚厛鍒涘緩鍙﹀涓涓嚎紼嬶紝鍋氫竴涓悓姝ヤ唬鐮佸潡錛屾妸閭d釜浠g爜鍧楃殑閿佹寚鍚戣繖涓埧瀛愮殑閽ュ寵銆傜劧鍚庡惎鍔ㄩ偅涓嚎紼嬨傚彧瑕佷綘鑳藉湪榪涘叆閭d釜浠g爜鍧楁椂鎶撳埌榪欐埧瀛愮殑閽ュ寵錛屼綘灝卞彲浠ヤ竴鐩翠繚鐣欏埌閫鍑洪偅涓唬鐮佸潡銆備篃灝辨槸璇翠綘鐢氳嚦鍙互瀵規(guī)湰鎴垮唴鎵鏈変笂閿佺殑鎴塊棿閬嶅巻錛岀敋鑷沖啀sleep(10*60*1000)錛岃屾埧闂ㄥ彛鍗磋繕鏈?000涓嚎紼嬪湪絳夎繖鎶婇挜鍖欏憿銆傚緢榪囩樉鍚с?/p>

鍦ㄦ瀵箂leep()鏂規(guī)硶鍜岄挜鍖欑殑鍏寵仈鎬ц涓涓嬨備竴涓嚎紼嬪湪鎷垮埌key鍚庯紝涓旀病鏈夊畬鎴愬悓姝ョ殑鍐呭鏃訛紝濡傛灉琚己鍒秙leep()浜嗭紝閭ey榪樹竴鐩村湪瀹冮偅鍎褲傜洿鍒板畠鍐嶆榪愯錛屽仛瀹屾墍鏈夊悓姝ュ唴瀹癸紝鎵嶄細褰掕繕key銆傝浣忥紝閭e浼欏彧鏄共媧誨共绱簡錛屽幓浼戞伅涓涓嬶紝浠栧茍娌″共瀹屼粬瑕佸共鐨勪簨銆備負浜嗛伩鍏嶅埆浜鴻繘鍏ラ偅涓埧闂存妸閲岄潰鎼炵殑涓鍥㈢碂錛屽嵆浣垮湪鐫¤鐨勬椂鍊欎粬涔熻鎶婇偅鍞竴鐨勯挜鍖欐埓鍦ㄨ韓涓娿?/p>

鏈鍚庯紝涔熻鏈変漢浼氶棶錛屼負浠涔堣涓鎶婇挜鍖欓氬紑錛岃屼笉鏄竴涓挜鍖欎竴涓棬鍛紵鎴戞兂榪欑函綺規(guī)槸鍥犱負澶嶆潅鎬ч棶棰樸備竴涓挜鍖欎竴涓棬褰撶劧鏇村畨鍏紝浣嗘槸浼氱壍鎵ソ澶氶棶棰樸傞挜鍖欑殑浜х敓錛屼繚綆★紝鑾峰緱錛屽綊榪樼瓑絳夈傚叾澶嶆潅鎬ф湁鍙兘闅忓悓姝ユ柟娉曠殑澧炲姞鍛堝嚑浣曠駭鏁板鍔狅紝涓ラ噸褰卞搷鏁堢巼銆?/p>

榪欎篃綆楁槸涓涓潈琛$殑闂鍚с備負浜嗗鍔犱竴鐐圭偣瀹夊叏鎬э紝瀵艱嚧鏁堢巼澶уぇ闄嶄綆錛屾槸澶氫箞涓嶅彲鍙栧晩銆?/p>

鎽樿嚜錛歨ttp://www.54bk.com/more.asp?name=czp&id=2097

涓銆佸綋涓や釜騫跺彂綰跨▼璁塊棶鍚屼竴涓璞bject涓殑榪欎釜synchronized(this)鍚屾浠g爜鍧楁椂錛屼竴涓椂闂村唴鍙兘鏈変竴涓嚎紼嬪緱鍒版墽琛屻傚彟涓涓嚎紼嬪繀欏葷瓑寰呭綋鍓嶇嚎紼嬫墽琛屽畬榪欎釜浠g爜鍧椾互鍚庢墠鑳芥墽琛岃浠g爜鍧椼?/p>

浜屻佺劧鑰岋紝褰撲竴涓嚎紼嬭闂畂bject鐨勪竴涓猻ynchronized(this)鍚屾浠g爜鍧楁椂錛屽彟涓涓嚎紼嬩粛鐒跺彲浠ヨ闂object涓殑闈瀞ynchronized(this)鍚屾浠g爜鍧椼?/p>

涓夈佸挨鍏跺叧閿殑鏄紝褰撲竴涓嚎紼嬭闂畂bject鐨勪竴涓猻ynchronized(this)鍚屾浠g爜鍧楁椂錛屽叾浠栫嚎紼嬪object涓墍鏈夊叾瀹僺ynchronized(this)鍚屾浠g爜鍧楃殑璁塊棶灝嗚闃誨銆?/p>

鍥涖佺涓変釜渚嬪瓙鍚屾牱閫傜敤鍏跺畠鍚屾浠g爜鍧椼備篃灝辨槸璇達紝褰撲竴涓嚎紼嬭闂畂bject鐨勪竴涓猻ynchronized(this)鍚屾浠g爜鍧楁椂錛屽畠?yōu)p幏寰椾簡榪欎釜object鐨勫璞¢攣銆傜粨鏋滐紝鍏跺畠綰跨▼瀵硅object瀵硅薄鎵鏈夊悓姝ヤ唬鐮侀儴鍒嗙殑璁塊棶閮借鏆傛椂闃誨銆?/p>

浜斻佷互涓婅鍒欏鍏跺畠瀵硅薄閿佸悓鏍烽傜敤.

涓句緥璇存槑錛?/p>

涓銆佸綋涓や釜騫跺彂綰跨▼璁塊棶鍚屼竴涓璞bject涓殑榪欎釜synchronized(this)鍚屾浠g爜鍧楁椂錛屼竴涓椂闂村唴鍙兘鏈変竴涓嚎紼嬪緱鍒版墽琛屻傚彟涓涓嚎紼嬪繀欏葷瓑寰呭綋鍓嶇嚎紼嬫墽琛屽畬榪欎釜浠g爜鍧椾互鍚庢墠鑳芥墽琛岃浠g爜鍧椼?/p>

package ths;

public class Thread1 implements Runnable {
public void run() {
synchronized(this) {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
}
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread ta = new Thread(t1, "A");
Thread tb = new Thread(t1, "B");
ta.start();
tb.start();
}
}

緇撴灉錛?/p>

A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4

浜屻佺劧鑰岋紝褰撲竴涓嚎紼嬭闂畂bject鐨勪竴涓猻ynchronized(this)鍚屾浠g爜鍧楁椂錛屽彟涓涓嚎紼嬩粛鐒跺彲浠ヨ闂object涓殑闈瀞ynchronized(this)鍚屾浠g爜鍧椼?/p>

package ths;

public class Thread2 {
public void m4t1() {
synchronized(this) {
int i = 5;
while( i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : " + i);
try {
Thread.sleep(500);
} catch (InterruptedException ie) {
}
}
}
}
public void m4t2() {
int i = 5;
while( i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : " + i);
try {
Thread.sleep(500);
} catch (InterruptedException ie) {
}
}
}
public static void main(String[] args) {
final Thread2 myt2 = new Thread2();
Thread t1 = new Thread(
new Runnable() {
public void run() {
myt2.m4t1();
}
}, "t1"
);
Thread t2 = new Thread(
new Runnable() {
public void run() {
myt2.m4t2();
}
}, "t2"
);
t1.start();
t2.start();
}
}

緇撴灉錛?/p>

t1 : 4
t2 : 4
t1 : 3
t2 : 3
t1 : 2
t2 : 2
t1 : 1
t2 : 1
t1 : 0
t2 : 0

涓夈佸挨鍏跺叧閿殑鏄紝褰撲竴涓嚎紼嬭闂畂bject鐨勪竴涓猻ynchronized(this)鍚屾浠g爜鍧楁椂錛屽叾浠栫嚎紼嬪object涓墍鏈夊叾瀹僺ynchronized(this)鍚屾浠g爜鍧楃殑璁塊棶灝嗚闃誨銆?/p>

//淇敼Thread2.m4t2()鏂規(guī)硶錛?/p>

public void m4t2() {
synchronized(this) {
int i = 5;
while( i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : " + i);
try {
Thread.sleep(500);
} catch (InterruptedException ie) {
}
}
}

}

緇撴灉錛?/p>

t1 : 4
t1 : 3
t1 : 2
t1 : 1
t1 : 0
t2 : 4
t2 : 3
t2 : 2
t2 : 1
t2 : 0

鍥涖佺涓変釜渚嬪瓙鍚屾牱閫傜敤鍏跺畠鍚屾浠g爜鍧椼備篃灝辨槸璇達紝褰撲竴涓嚎紼嬭闂畂bject鐨勪竴涓猻ynchronized(this)鍚屾浠g爜鍧楁椂錛屽畠?yōu)p幏寰椾簡榪欎釜object鐨勫璞¢攣銆傜粨鏋滐紝鍏跺畠綰跨▼瀵硅object瀵硅薄鎵鏈夊悓姝ヤ唬鐮侀儴鍒嗙殑璁塊棶閮借鏆傛椂闃誨銆?/p>

//淇敼Thread2.m4t2()鏂規(guī)硶濡備笅錛?/p>

public synchronized void m4t2() {
int i = 5;
while( i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : " + i);
try {
Thread.sleep(500);
} catch (InterruptedException ie) {
}
}
}

緇撴灉錛?/p>

t1 : 4
t1 : 3
t1 : 2
t1 : 1
t1 : 0
t2 : 4
t2 : 3
t2 : 2
t2 : 1
t2 : 0

浜斻佷互涓婅鍒欏鍏跺畠瀵硅薄閿佸悓鏍烽傜敤:

package ths;

public class Thread3 {
class Inner {
private void m4t1() {
int i = 5;
while(i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : Inner.m4t1()=" + i);
try {
Thread.sleep(500);
} catch(InterruptedException ie) {
}
}
}
private void m4t2() {
int i = 5;
while(i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : Inner.m4t2()=" + i);
try {
Thread.sleep(500);
} catch(InterruptedException ie) {
}
}
}
}
private void m4t1(Inner inner) {
synchronized(inner) { //浣跨敤瀵硅薄閿?
inner.m4t1();
}
}
private void m4t2(Inner inner) {
inner.m4t2();
}
public static void main(String[] args) {
final Thread3 myt3 = new Thread3();
final Inner inner = myt3.new Inner();
Thread t1 = new Thread(
new Runnable() {
public void run() {
myt3.m4t1(inner);
}
}, "t1"
);
Thread t2 = new Thread(
new Runnable() {
public void run() {
myt3.m4t2(inner);
}
}, "t2"
);
t1.start();
t2.start();
}
}

緇撴灉錛?/p>

灝界綰跨▼t1鑾峰緱浜嗗Inner鐨勫璞¢攣錛屼絾鐢變簬綰跨▼t2璁塊棶鐨勬槸鍚屼竴涓狪nner涓殑闈炲悓姝ラ儴鍒嗐傛墍浠ヤ袱涓嚎紼嬩簰涓嶅共鎵般?/p>

t1 : Inner.m4t1()=4
t2 : Inner.m4t2()=4
t1 : Inner.m4t1()=3
t2 : Inner.m4t2()=3
t1 : Inner.m4t1()=2
t2 : Inner.m4t2()=2
t1 : Inner.m4t1()=1
t2 : Inner.m4t2()=1
t1 : Inner.m4t1()=0
t2 : Inner.m4t2()=0

鐜板湪鍦↖nner.m4t2()鍓嶉潰鍔犱笂synchronized錛?/p>

private synchronized void m4t2() {
int i = 5;
while(i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : Inner.m4t2()=" + i);
try {
Thread.sleep(500);
} catch(InterruptedException ie) {
}
}
}

緇撴灉錛?/p>

灝界綰跨▼t1涓巘2璁塊棶浜嗗悓涓涓狪nner瀵硅薄涓袱涓涓嶇浉鍏崇殑閮ㄥ垎,浣嗗洜涓簍1鍏堣幏寰椾簡瀵笽nner鐨勫璞¢攣錛屾墍浠2瀵笽nner.m4t2()鐨勮闂篃琚樆濉烇紝鍥犱負m4t2()鏄疘nner涓殑涓涓悓姝ユ柟娉曘?/p>

t1 : Inner.m4t1()=4
t1 : Inner.m4t1()=3
t1 : Inner.m4t1()=2
t1 : Inner.m4t1()=1
t1 : Inner.m4t1()=0
t2 : Inner.m4t2()=4
t2 : Inner.m4t2()=3
t2 : Inner.m4t2()=2
t2 : Inner.m4t2()=1
t2 : Inner.m4t2()=0



]]>
Java鍙嶅皠鏈哄埗 (杞?http://www.tkk7.com/yc1354/archive/2007/06/14/124347.html璧墊案瓚?/dc:creator>璧墊案瓚?/author>Thu, 14 Jun 2007 08:52:00 GMThttp://www.tkk7.com/yc1354/archive/2007/06/14/124347.htmlhttp://www.tkk7.com/yc1354/comments/124347.htmlhttp://www.tkk7.com/yc1354/archive/2007/06/14/124347.html#Feedback0http://www.tkk7.com/yc1354/comments/commentRss/124347.htmlhttp://www.tkk7.com/yc1354/services/trackbacks/124347.html鎽樿
Reflection 鏄疛ava琚涓哄姩鎬侊紙鎴栧噯鍔ㄦ侊級璇█鐨勪竴涓叧閿ц川銆傝繖涓満鍒跺厑璁哥▼搴忓湪榪愯鏃墮忚繃Reflection APIs鍙栧緱浠諱綍涓涓凡鐭ュ悕縐扮殑class鐨勫唴閮ㄤ俊鎭紝鍖呮嫭鍏秏odifiers錛堣濡俻ublic, static 絳夌瓑錛夈乻uperclass錛堜緥濡侽bject錛夈佸疄鐜頒箣interfaces錛堜緥濡侰loneable錛夛紝涔熷寘鎷琭ields鍜宮ethods鐨勬墍鏈変俊鎭紝騫跺彲浜庤繍琛屾椂鏀瑰彉fields鍐呭鎴栧敜璧穖ethods銆傛湰鏂囧熺敱瀹炰緥錛屽ぇ闈㈢Н紺鴻寖Reflection APIs銆?br> 
鍏抽敭璇嶏細
Introspection錛堝唴鐪併佸唴瑙傦級
Reflection錛堝弽灝勶級
鏈夋椂鍊欐垜浠鏌愪釜璇█鍏鋒湁寰堝己鐨勫姩鎬佹э紝鏈夋椂鍊欐垜浠細鍖哄垎鍔ㄦ佸拰闈欐佺殑涓嶅悓鎶鏈笌浣滄硶銆傛垜浠湕鏈椾笂鍙e姩鎬佺粦瀹氾紙dynamic binding錛夈佸姩鎬侀摼鎺ワ紙dynamic linking錛夈佸姩鎬佸姞杞斤紙dynamic loading錛夌瓑銆傜劧鑰?#8220;鍔ㄦ?#8221;涓璇嶅叾瀹炴病鏈夌粷瀵硅屾櫘閬嶉傜敤鐨勪弗鏍煎畾涔夛紝鏈夋椂鍊欑敋鑷沖儚瀵硅薄瀵煎悜褰撳垵琚鍏ョ紪紼嬮鍩熶竴鏍鳳紝涓浜轟竴鎶婂彿錛屽悇鍚瑰悇鐨勮皟銆?br> 
涓鑸岃█錛屽紑鍙戣呯ぞ緹よ鍒板姩鎬佽璦錛屽ぇ鑷磋鍚岀殑涓涓畾涔夋槸錛?#8220;紼嬪簭榪愯鏃訛紝鍏佽鏀瑰彉紼嬪簭緇撴瀯鎴栧彉閲忕被鍨嬶紝榪欑璇█縐頒負鍔ㄦ佽璦”銆備粠榪欎釜瑙傜偣鐪嬶紝Perl錛孭ython錛孯uby鏄姩鎬佽璦錛孋++錛孞ava錛孋#涓嶆槸鍔ㄦ佽璦銆?br> 
灝界鍦ㄨ繖鏍風殑瀹氫箟涓庡垎綾諱笅Java涓嶆槸鍔ㄦ佽璦錛屽畠鍗存湁鐫涓涓潪甯哥獊鍑虹殑鍔ㄦ佺浉鍏蟲満鍒訛細Reflection銆傝繖涓瓧鐨勬剰鎬濇槸“鍙嶅皠銆佹槧璞°佸掑獎”錛岀敤鍦↗ava韜笂鎸囩殑鏄垜浠彲浠ヤ簬榪愯鏃跺姞杞姐佹帰鐭ャ佷嬌鐢ㄧ紪璇戞湡闂村畬鍏ㄦ湭鐭ョ殑classes銆傛崲鍙ヨ瘽璇達紝Java紼嬪簭鍙互鍔犺澆涓涓繍琛屾椂鎵嶅緱鐭ュ悕縐扮殑class錛岃幏鎮(zhèn)夊叾瀹屾暣鏋勯狅紙浣嗕笉鍖呮嫭methods瀹氫箟錛夛紝騫剁敓鎴愬叾瀵硅薄瀹炰綋銆佹垨瀵瑰叾fields璁懼箋佹垨鍞よ搗鍏秏ethods1銆傝繖縐?#8220;鐪嬮廲lass”鐨勮兘鍔涳紙the ability of the program to examine itself錛夎縐頒負introspection錛堝唴鐪併佸唴瑙傘佸弽鐪侊級銆俁eflection鍜宨ntrospection鏄父琚茍鎻愮殑涓や釜鏈銆?br> 
Java濡備綍鑳藉鍋氬嚭涓婅堪鐨勫姩鎬佺壒鎬у憿錛熻繖鏄竴涓繁榪滆瘽棰橈紝鏈枃瀵規(guī)鍙畝鍗曚粙緇嶄竴浜涙蹇點傛暣涓瘒騫呮渶涓昏榪樻槸浠嬬粛Reflection APIs錛屼篃灝辨槸璁╄鑰呯煡閬撳浣曟帰绱lass鐨勭粨鏋勩佸浣曞鏌愪釜“榪愯鏃舵墠鑾風煡鍚嶇О鐨刢lass”鐢熸垚涓浠藉疄浣撱佷負鍏秄ields璁懼箋佽皟鐢ㄥ叾methods銆傛湰鏂囧皢璋堝埌java.lang.Class錛屼互鍙妀ava.lang.reflect涓殑Method銆丗ield銆丆onstructor絳夌瓑classes銆?br> 
“Class”class
浼楁墍鍛ㄧ煡Java鏈変釜Object class錛屾槸鎵鏈塉ava classes鐨勭戶鎵挎牴婧愶紝鍏跺唴澹版槑浜嗘暟涓簲璇ュ湪鎵鏈塉ava class涓鏀瑰啓鐨刴ethods錛歨ashCode()銆乪quals()銆乧lone()銆乼oString()銆乬etClass()絳夈傚叾涓璯etClass()榪斿洖涓涓狢lass object銆?br> 
Class class鍗佸垎鐗規(guī)畩銆傚畠鍜屼竴鑸琧lasses涓鏍風戶鎵胯嚜Object錛屽叾瀹炰綋鐢ㄤ互琛ㄨ揪Java紼嬪簭榪愯鏃剁殑classes鍜宨nterfaces錛屼篃鐢ㄦ潵琛ㄨ揪enum銆乤rray銆乸rimitive Java types錛坆oolean, byte, char, short, int, long, float, double錛変互鍙婂叧閿瘝void銆傚綋涓涓猚lass琚姞杞斤紝鎴栧綋鍔犺澆鍣紙class loader錛夌殑defineClass()琚獼VM璋冪敤錛孞VM 渚胯嚜鍔ㄤ駭鐢熶竴涓狢lass object銆傚鏋滄?zhèn)ㄦ儧_熺敱“淇敼Java鏍囧噯搴撴簮鐮?#8221;鏉ヨ瀵烠lass object鐨勫疄闄呯敓鎴愭椂鏈猴紙渚嬪鍦–lass鐨刢onstructor鍐呮坊鍔犱竴涓猵rintln()錛夛紝涓嶈兘澶燂紒鍥犱負Class騫舵病鏈塸ublic constructor錛堣鍥?錛夈傛湰鏂囨渶鍚庢垜浼氭嫧涓灝忓潡綃囧箙欏哄甫璋堣皥Java鏍囧噯搴撴簮鐮佺殑鏀瑰姩鍔炴硶銆?br> 
Class鏄疪eflection鏁呬簨璧鋒簮銆傞拡瀵逛換浣曟?zhèn)ㄦ兿x帰鍕樼殑class錛屽敮鏈夊厛涓哄畠浜х敓涓涓狢lass object錛屾帴涓嬫潵鎵嶈兘緇忕敱鍚庤呭敜璧蜂負鏁板崄澶氫釜鐨凴eflection APIs銆傝繖浜汚PIs灝嗗湪紼嶅悗鐨勬帰闄╂椿鍔ㄤ腑涓涓浜浉銆?br> 
#001 public final
#002 class Class<T> implements java.io.Serializable,
#003 java.lang.reflect.GenericDeclaration,
#004 java.lang.reflect.Type,
#005 java.lang.reflect.AnnotatedElement {
#006    private Class() {}
#007    public String toString() {
#008        return ( isInterface() ? "interface " :
#009        (isPrimitive() ? "" : "class "))
#010    + getName();
#011 }
...
鍥?錛欳lass class鐗囨銆傛敞鎰忓畠鐨刾rivate empty ctor錛屾剰鎸囦笉鍏佽浠諱綍浜虹粡鐢辯紪紼嬫柟寮忎駭鐢烠lass object銆傛槸鐨勶紝鍏秓bject 鍙兘鐢盝VM 浜х敓銆?br> 
“Class” object鐨勫彇寰楅斿緞
Java鍏佽鎴戜滑浠庡縐嶇閬撲負涓涓猚lass鐢熸垚瀵瑰簲鐨凜lass object銆傚浘2鏄竴浠芥暣鐞嗐?br>Class object 璇炵敓綆¢亾 紺轟緥
榪愮敤getClass()
娉細姣忎釜class 閮芥湁姝ゅ嚱鏁?String str = "abc";
Class c1 = str.getClass();
榪愮敤
Class.getSuperclass()2 Button b = new Button();
Class c1 = b.getClass();
Class c2 = c1.getSuperclass();
榪愮敤static method
Class.forName()
錛堟渶甯歌浣跨敤錛?Class c1 = Class.forName ("java.lang.String");
Class c2 = Class.forName ("java.awt.Button");
Class c3 = Class.forName ("java.util.LinkedList$Entry");
Class c4 = Class.forName ("I");
Class c5 = Class.forName ("[I");
榪愮敤
.class 璇硶 Class c1 = String.class;
Class c2 = java.awt.Button.class;
Class c3 = Main.InnerClass.class;
Class c4 = int.class;
Class c5 = int[].class;
榪愮敤
primitive wrapper classes
鐨凾YPE 璇硶
  Class c1 = Boolean.TYPE;
Class c2 = Byte.TYPE;
Class c3 = Character.TYPE;
Class c4 = Short.TYPE;
Class c5 = Integer.TYPE;
Class c6 = Long.TYPE;
Class c7 = Float.TYPE;
Class c8 = Double.TYPE;
Class c9 = Void.TYPE;


鍥?錛欽ava 鍏佽澶氱綆¢亾鐢熸垚Class object銆?br> 
Java classes 緇勬垚鍒嗘瀽
棣栧厛瀹規(guī)垜浠ュ浘3鐨刯ava.util.LinkedList涓轟緥錛屽皢Java class鐨勫畾涔夊ぇ鍗稿叓鍧楋紝姣忎竴鍧楀垎鍒搴斿浘4鎵紺虹殑Reflection API銆傚浘5鍒欐槸“鑾峰緱class鍚勫尯鍧椾俊鎭?#8221;鐨勭▼搴忕ず渚嬪強鎵ц緇撴灉錛屽畠浠兘鍙栬嚜鏈枃紺轟緥紼嬪簭鐨勫搴旂墖孌點?br> 
package java.util;                      //(1)
import java.lang.*;                     //(2)
public class LinkedList<E>              //(3)(4)(5)
extends AbstractSequentialList<E>       //(6)
implements List<E>, Queue<E>,
Cloneable, java.io.Serializable         //(7)
{
private static class Entry<E> { … }//(8)
public LinkedList() { … }           //(9)
public LinkedList(Collection<? extends E> c) { … }
public E getFirst() { … }           //(10)
public E getLast() { … }
private transient Entry<E> header = …; //(11)
private transient int size = 0;
}
鍥?錛氬皢涓涓狫ava class 澶у嵏鍏潡錛屾瘡鍧楃浉搴斾簬涓涓垨涓緇凴eflection APIs錛堝浘4錛夈?br> 
Java classes 鍚勬垚浠芥墍瀵瑰簲鐨凴eflection APIs
鍥?鐨勫悇涓狫ava class鎴愪喚錛屽垎鍒搴斾簬鍥?鐨凴eflection API錛屽叾涓嚭鐜扮殑Package銆丮ethod銆丆onstructor銆丗ield絳夌瓑classes錛岄兘瀹氫箟浜巎ava.lang.reflect銆?br>Java class 鍐呴儴妯″潡錛堝弬瑙佸浘3錛?Java class 鍐呴儴妯″潡璇存槑 鐩稿簲涔婻eflection API錛屽鍗婁負Class methods銆?榪斿洖鍊肩被鍨?return type)
(1) package class闅跺睘鍝釜package getPackage() Package
(2) import class瀵煎叆鍝簺classes 鏃犵洿鎺ュ搴斾箣API銆?br>瑙e喅鍔炴硶瑙佸浘5-2銆?nbsp; 
(3) modifier class錛堟垨methods, fields錛夌殑灞炴?br>  int getModifiers()
Modifier.toString(int)
Modifier.isInterface(int) int
String
bool
(4) class name or interface name class/interface 鍚嶇ОgetName() String
(5) type parameters 鍙傛暟鍖栫被鍨嬬殑鍚嶇О getTypeParameters()  TypeVariable <Class>[]
(6) base class base class錛堝彧鍙兘涓涓級 getSuperClass() Class
(7) implemented interfaces 瀹炵幇鏈夊摢浜沬nterfaces getInterfaces() Class[]
 
(8) inner classes 鍐呴儴classes getDeclaredClasses() Class[]
(8') outer class 濡傛灉鎴戜滑瑙傚療鐨刢lass 鏈韓鏄痠nner classes錛岄偅涔堢浉瀵瑰畠?yōu)兗氭湁涓猳uter class銆?getDeclaringClass() Class
(9) constructors 鏋勯犲嚱鏁癵etDeclaredConstructors() 涓嶈 public 鎴杙rivate 鎴栧叾瀹僡ccess level錛岀殕鍙幏寰椼傚彟鏈夊姛鑳借繎浼間箣鍙栧緱鍑芥暟銆?Constructor[]
(10) methods 鎿嶄綔鍑芥暟getDeclaredMethods() 涓嶈 public 鎴杙rivate 鎴栧叾瀹僡ccess level錛岀殕鍙幏寰椼傚彟鏈夊姛鑳借繎浼間箣鍙栧緱鍑芥暟銆?Method[]
(11) fields 瀛楁錛堟垚鍛樺彉閲忥級 getDeclaredFields()涓嶈 public 鎴杙rivate 鎴栧叾瀹僡ccess level錛岀殕鍙幏寰椼傚彟鏈夊姛鑳借繎浼間箣鍙栧緱鍑芥暟銆?Field[]


鍥?錛欽ava class澶у嵏鍏潡鍚庯紙濡傚浘3錛夛紝姣忎竴鍧楁墍瀵瑰簲鐨凴eflection API銆傛湰琛ㄥ茍闈?br>Reflection APIs 鐨勫叏閮ㄣ?br> 
Java Reflection API 榪愮敤紺轟緥
鍥?紺鴻寖鍥?鎻愯繃鐨勬瘡涓涓猂eflection API錛屽強鍏舵墽琛岀粨鏋溿傜▼搴忎腑鍑虹幇鐨則Name()鏄釜杈呭姪鍑芥暟錛屽彲灝嗗叾絎竴鑷彉閲忔墍浠h〃鐨?#8220;Java class瀹屾暣璺緞瀛楃涓?#8221;鍓ラ櫎璺緞閮ㄥ垎錛岀暀涓媍lass鍚嶇О錛屽偍瀛樺埌絎簩鑷彉閲忔墍浠h〃鐨勪竴涓猦ashtable鍘誨茍榪斿洖錛堝鏋滅浜岃嚜鍙橀噺涓簄ull錛屽氨涓嶅偍瀛樿屽彧鏄繑鍥烇級銆?br> 
#001 Class c = null;
#002 c = Class.forName(args[0]);
#003
#004 Package p;
#005 p = c.getPackage();
#006
#007 if (p != null)
#008    System.out.println("package "+p.getName()+";");
 
鎵ц緇撴灉錛堜緥錛夛細
package java.util;
鍥?-1錛氭壘鍑篶lass 闅跺睘鐨刾ackage銆傚叾涓殑c灝嗙戶緇部鐢ㄤ簬浠ヤ笅鍚勭▼搴忕墖孌點?br> 
#001 ff = c.getDeclaredFields();
#002 for (int i = 0; i < ff.length; i++)
#003    x = tName(ff[i].getType().getName(), classRef);
#004
#005 cn = c.getDeclaredConstructors();
#006 for (int i = 0; i < cn.length; i++) {
#007    Class cx[] = cn[i].getParameterTypes();
#008    for (int j = 0; j < cx.length; j++)
#009        x = tName(cx[j].getName(), classRef);
#010 }
#011
#012 mm = c.getDeclaredMethods();
#013 for (int i = 0; i < mm.length; i++) {
#014    x = tName(mm[i].getReturnType().getName(), classRef);
#015    Class cx[] = mm[i].getParameterTypes();
#016    for (int j = 0; j < cx.length; j++)
#017        x = tName(cx[j].getName(), classRef);
#018 }
#019 classRef.remove(c.getName()); //涓嶅繀璁板綍鑷繁錛堜笉闇import 鑷繁錛?br> 
鎵ц緇撴灉錛堜緥錛夛細
import java.util.ListIterator;
import java.lang.Object;
import java.util.LinkedList$Entry;
import java.util.Collection;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
鍥?-2錛氭壘鍑哄鍏ョ殑classes錛屽姩浣滅粏鑺傝瑙佸唴鏂囪鏄庛?br> 
#001 int mod = c.getModifiers();
#002 System.out.print(Modifier.toString(mod)); //鏁翠釜modifier
#003
#004 if (Modifier.isInterface(mod))
#005    System.out.print(" "); //鍏抽敭璇?"interface" 宸插惈浜巑odifier
#006 else
#007    System.out.print(" class "); //鍏抽敭璇?"class"
#008 System.out.print(tName(c.getName(), null)); //class 鍚嶇О
 
鎵ц緇撴灉錛堜緥錛夛細
public class LinkedList
鍥?-3錛氭壘鍑篶lass鎴杋nterface 鐨勫悕縐幫紝鍙婂叾灞炴э紙modifiers錛夈?br> 
#001 TypeVariable<Class>[] tv;
#002 tv = c.getTypeParameters(); //warning: unchecked conversion
#003 for (int i = 0; i < tv.length; i++) {
#004    x = tName(tv[i].getName(), null); //渚嬪 E,K,V...
#005    if (i == 0) //絎竴涓?br>#006        System.out.print("<" + x);
#007    else //闈炵涓涓?br>#008        System.out.print("," + x);
#009    if (i == tv.length-1) //鏈鍚庝竴涓?br>#010        System.out.println(">");
#011 }
 
鎵ц緇撴灉錛堜緥錛夛細
public abstract interface Map<K,V>
鎴杙ublic class LinkedList<E>
鍥?-4錛氭壘鍑簆arameterized types 鐨勫悕縐?br> 
#001 Class supClass;
#002 supClass = c.getSuperclass();
#003 if (supClass != null) //濡傛灉鏈塻uper class
#004    System.out.print(" extends" +
#005 tName(supClass.getName(),classRef));
 
鎵ц緇撴灉錛堜緥錛夛細
public class LinkedList<E>
extends AbstractSequentialList,
鍥?-5錛氭壘鍑篵ase class銆傛墽琛岀粨鏋滃鍑轟竴涓笉璇ユ湁鐨勯楀彿浜庡熬绔傛闈炴湰澶勯噸鐐癸紝涓虹畝鍖栬錛屼笉澶氬仛澶勭悊銆?br> 
#001 Class cc[];
#002 Class ctmp;
#003 //鎵懼嚭鎵鏈夎瀹炵幇鐨刬nterfaces
#004 cc = c.getInterfaces();
#005 if (cc.length != 0)
#006    System.out.print(", \r\n" + " implements "); //鍏抽敭璇?br>#007 for (Class cite : cc) //JDK1.5 鏂板紡寰幆鍐欐硶
#008    System.out.print(tName(cite.getName(), null)+", ");
 
鎵ц緇撴灉錛堜緥錛夛細
public class LinkedList<E>
extends AbstractSequentialList,
implements List, Queue, Cloneable, Serializable,
鍥?-6錛氭壘鍑篿mplemented interfaces銆傛墽琛岀粨鏋滃鍑轟竴涓笉璇ユ湁鐨勯楀彿浜庡熬绔傛闈炴湰澶勯噸鐐癸紝涓虹畝鍖栬錛屼笉澶氬仛澶勭悊銆?br> 
#001 cc = c.getDeclaredClasses(); //鎵懼嚭inner classes
#002 for (Class cite : cc)
#003    System.out.println(tName(cite.getName(), null));
#004
#005 ctmp = c.getDeclaringClass(); //鎵懼嚭outer classes
#006 if (ctmp != null)
#007    System.out.println(ctmp.getName());
 
鎵ц緇撴灉錛堜緥錛夛細
LinkedList$Entry
LinkedList$ListItr
鍥?-7錛氭壘鍑篿nner classes 鍜宱uter class
 
#001 Constructor cn[];
#002 cn = c.getDeclaredConstructors();
#003 for (int i = 0; i < cn.length; i++) {
#004    int md = cn[i].getModifiers();
#005    System.out.print(" " + Modifier.toString(md) + " " +
#006    cn[i].getName());
#007    Class cx[] = cn[i].getParameterTypes();
#008    System.out.print("(");
#009    for (int j = 0; j < cx.length; j++) {
#010        System.out.print(tName(cx[j].getName(), null));
#011        if (j < (cx.length - 1)) System.out.print(", ");
#012    }
#013    System.out.print(")");
#014 }
 
鎵ц緇撴灉錛堜緥錛夛細
public java.util.LinkedList(Collection)
public java.util.LinkedList()
鍥?-8a錛氭壘鍑烘墍鏈塩onstructors
 
#004 System.out.println(cn[i].toGenericString());
 
鎵ц緇撴灉錛堜緥錛夛細
public java.util.LinkedList(java.util.Collection<? extends E>)
public java.util.LinkedList()
鍥?-8b錛氭壘鍑烘墍鏈塩onstructors銆傛湰渚嬪湪for 寰幆鍐呬嬌鐢╰oGenericString()錛岀渷浜嬨?br> 
#001 Method mm[];
#002 mm = c.getDeclaredMethods();
#003 for (int i = 0; i < mm.length; i++) {
#004    int md = mm[i].getModifiers();
#005    System.out.print(" "+Modifier.toString(md)+" "+
#006    tName(mm[i].getReturnType().getName(), null)+" "+
#007    mm[i].getName());
#008    Class cx[] = mm[i].getParameterTypes();
#009    System.out.print("(");
#010    for (int j = 0; j < cx.length; j++) {
#011        System.out.print(tName(cx[j].getName(), null));
#012    if (j < (cx.length - 1)) System.out.print(", ");
#013    }
#014    System.out.print(")");
#015 }
 
鎵ц緇撴灉錛堜緥錛夛細
public Object get(int)
public int size()
鍥?-9a錛氭壘鍑烘墍鏈塵ethods
 
#004 System.out.println(mm[i].toGenericString());
 
public E java.util.LinkedList.get(int)
public int java.util.LinkedList.size()
鍥?-9b錛氭壘鍑烘墍鏈塵ethods銆傛湰渚嬪湪for 寰幆鍐呬嬌鐢╰oGenericString()錛岀渷浜嬨?br> 
#001 Field ff[];
#002 ff = c.getDeclaredFields();
#003 for (int i = 0; i < ff.length; i++) {
#004    int md = ff[i].getModifiers();
#005    System.out.println(" "+Modifier.toString(md)+" "+
#006    tName(ff[i].getType().getName(), null) +" "+
#007    ff[i].getName()+";");
#008 }
 
鎵ц緇撴灉錛堜緥錛夛細
private transient LinkedList$Entry header;
private transient int size;
鍥?-10a錛氭壘鍑烘墍鏈塮ields
 
#004 System.out.println("G: " + ff[i].toGenericString());
 
private transient java.util.LinkedList.java.util.LinkedList$Entry<E> ??
java.util.LinkedList.header
private transient int java.util.LinkedList.size
鍥?-10b錛氭壘鍑烘墍鏈塮ields銆傛湰渚嬪湪for 寰幆鍐呬嬌鐢╰oGenericString()錛岀渷浜嬨?br> 
鎵懼嚭class鍙傜敤錛堝鍏ワ級鐨勬墍鏈塩lasses
娌℃湁鐩存帴鍙敤鐨凴eflection API鍙互涓烘垜浠壘鍑烘煇涓猚lass鍙傜敤鐨勬墍鏈夊叾瀹僣lasses銆傝鑾峰緱榪欓」淇℃伅錛屽繀欏誨仛鑻﹀伐錛屼竴姝ヤ竴鑴氬嵃閫愪竴璁板綍銆傛垜浠繀欏昏瀵熸墍鏈塮ields鐨勭被鍨嬨佹墍鏈塵ethods錛堝寘鎷琧onstructors錛夌殑鍙傛暟綾誨瀷鍜屽洖榪旂被鍨嬶紝鍓旈櫎閲嶅錛岀暀涓嬪敮涓銆傝繖姝f槸涓轟粈涔堝浘5-2紼嬪簭浠g爜瑕佷負tName()鎸囧畾涓涓猦ashtable錛堣岄潪涓涓猲ull錛夊仛涓虹浜岃嚜鍙橀噺鐨勭紭鏁咃細hashtable鍙負鎴戜滑鍌ㄥ瓨鍏冪礌錛堟湰渚嬩負瀛楃涓詫級錛屽張淇濊瘉涓嶉噸澶嶃?br> 
鏈枃璁ㄨ鑷蟲錛屽嚑涔庡彲浠ヨ繕鍘熶竴涓猚lass鐨勫師璨岋紙鍞湁methods 鍜宑tors鐨勫畾涔夋棤娉曞彇寰楋級銆傛帴涓嬫潵璁ㄨReflection 鐨勫彟涓変釜鍔ㄦ佹ц川錛?1) 榪愯鏃剁敓鎴恑nstances錛?2) 鎵?br>琛屾湡鍞よ搗methods錛?3) 榪愯鏃舵敼鍔╢ields銆?br> 
榪愯鏃剁敓鎴恑nstances
嬈茬敓鎴愬璞″疄浣擄紝鍦≧eflection 鍔ㄦ佹満鍒朵腑鏈変袱縐嶄綔娉曪紝涓涓拡瀵?#8220;鏃犺嚜鍙橀噺ctor”錛?br>涓涓拡瀵?#8220;甯﹀弬鏁癱tor”銆傚浘6鏄潰瀵?#8220;鏃犺嚜鍙橀噺ctor”鐨勪緥瀛愩傚鏋滄璋冪敤鐨勬槸“甯﹀弬鏁癱tor“灝辨瘮杈冮夯鐑︿簺錛屽浘7鏄釜渚嬪瓙錛屽叾涓笉鍐嶈皟鐢–lass鐨刵ewInstance()錛岃屾槸璋冪敤Constructor 鐨刵ewInstance()銆傚浘7棣栧厛鍑嗗涓涓狢lass[]鍋氫負ctor鐨勫弬鏁扮被鍨嬶紙鏈緥鎸囧畾涓轟竴涓猟ouble鍜屼竴涓猧nt錛夛紝鐒跺悗浠ユ涓鴻嚜鍙橀噺璋冪敤getConstructor()錛岃幏寰椾竴涓笓灞瀋tor銆傛帴涓嬫潵鍐嶅噯澶囦竴涓狾bject[] 鍋氫負ctor瀹炲弬鍊鹼紙鏈緥鎸囧畾3.14159鍜?25錛夛紝璋冪敤涓婅堪涓撳睘ctor鐨刵ewInstance()銆?br> 
#001 Class c = Class.forName("DynTest");
#002 Object obj = null;
#003 obj = c.newInstance(); //涓嶅甫鑷彉閲?br>#004 System.out.println(obj);
鍥?錛氬姩鎬佺敓鎴?#8220;Class object 鎵瀵瑰簲涔媍lass”鐨勫璞″疄浣擄紱鏃犺嚜鍙橀噺銆?br> 
#001 Class c = Class.forName("DynTest");
#002 Class[] pTypes = new Class[] { double.class, int.class };
#003 Constructor ctor = c.getConstructor(pTypes);
#004 //鎸囧畾parameter list錛屼究鍙幏寰楃壒瀹氫箣ctor
#005
#006 Object obj = null;
#007 Object[] arg = new Object[] {3.14159, 125}; //鑷彉閲?br>#008 obj = ctor.newInstance(arg);
#009 System.out.println(obj);
鍥?錛氬姩鎬佺敓鎴?#8220;Class object 瀵瑰簲涔媍lass”鐨勫璞″疄浣擄紱鑷彉閲忎互Object[]琛ㄧず銆?br> 
榪愯鏃惰皟鐢╩ethods
榪欎釜鍔ㄤ綔鍜屼笂榪拌皟鐢?#8220;甯﹀弬鏁頒箣ctor”鐩稿綋綾諱技銆傞鍏堝噯澶囦竴涓狢lass[]鍋氫負ctor鐨勫弬鏁扮被鍨嬶紙鏈緥鎸囧畾鍏朵腑涓涓槸String錛屽彟涓涓槸Hashtable錛夛紝鐒跺悗浠ユ涓鴻嚜鍙橀噺璋冪敤getMethod()錛岃幏寰楃壒瀹氱殑Method object銆傛帴涓嬫潵鍑嗗涓涓狾bject[]鏀劇疆鑷彉閲忥紝鐒跺悗璋冪敤涓婅堪鎵寰椾箣鐗瑰畾Method object鐨刬nvoke()錛屽鍥?銆傜煡閬撲負浠涔堢儲鍙朚ethod object鏃朵笉闇鎸囧畾鍥炶繑綾誨瀷鍚楋紵鍥犱負method overloading鏈哄埗瑕佹眰signature錛堢講鍚嶅紡錛夊繀欏誨敮涓錛岃屽洖榪旂被鍨嬪茍闈瀞ignature鐨勪竴涓垚浠姐傛崲鍙ヨ瘽璇達紝鍙鎸囧畾浜唌ethod鍚嶇О鍜屽弬鏁板垪錛屽氨涓瀹氭寚鍑轟簡涓涓嫭涓鏃犱簩鐨刴ethod銆?br> 
#001 public String func(String s, Hashtable ht)
#002 {
#003 …System.out.println("func invoked"); return s;
#004 }
#005 public static void main(String args[])
#006 {
#007 Class c = Class.forName("Test");
#008 Class ptypes[] = new Class[2];
#009 ptypes[0] = Class.forName("java.lang.String");
#010 ptypes[1] = Class.forName("java.util.Hashtable");
#011 Method m = c.getMethod("func",ptypes);
#012 Test obj = new Test();
#013 Object args[] = new Object[2];
#014 arg[0] = new String("Hello,world");
#015 arg[1] = null;
#016 Object r = m.invoke(obj, arg);
#017 Integer rval = (String)r;
#018 System.out.println(rval);
#019 }
鍥?錛氬姩鎬佸敜璧穖ethod
 
榪愯鏃跺彉鏇磃ields鍐呭
涓庡厛鍓嶄袱涓姩浣滅浉姣旓紝“鍙樻洿field鍐呭”杞繪澗澶氫簡錛屽洜涓哄畠涓嶉渶瑕佸弬鏁板拰鑷彉閲忋傞鍏堣皟鐢–lass鐨刧etField()騫舵寚瀹歠ield鍚嶇О銆傝幏寰楃壒瀹氱殑Field object涔嬪悗渚垮彲鐩存帴璋冪敤Field鐨刧et()鍜宻et()錛屽鍥?銆?br> 
#001 public class Test {
#002 public double d;
#003
#004 public static void main(String args[])
#005 {
#006 Class c = Class.forName("Test");
#007 Field f = c.getField("d"); //鎸囧畾field 鍚嶇О
#008 Test obj = new Test();
#009 System.out.println("d= " + (Double)f.get(obj));
#010 f.set(obj, 12.34);
#011 System.out.println("d= " + obj.d);
#012 }
#013 }
鍥?錛氬姩鎬佸彉鏇磃ield 鍐呭
 
Java 婧愮爜鏀瑰姩鍔炴硶
鍏堝墠鎴戞浘鎻愬埌錛屽師鏈兂鍊熺敱“鏀瑰姩Java鏍囧噯搴撴簮鐮?#8221;鏉ユ祴鐭lass object鐨勭敓鎴愶紝浣嗙敱浜庡叾ctor鍘熷璁捐涓簆rivate錛屼篃灝辨槸璇翠笉鍙兘閫忚繃榪欎釜綆¢亾鐢熸垚Class object錛堣屾槸鐢眂lass loader璐熻矗鐢熸垚錛夛紝鍥犳“鍦╟tor涓墦鍗板嚭鏌愮淇℃伅”鐨勪紒鍥句篃灝卞け鍘諱簡鎰忎箟銆?br> 
榪欓噷鎴戣璋堢偣棰樺璇濓細濡備綍淇敼Java鏍囧噯搴撴簮鐮佸茍璁╁畠鍙嶅簲鍒版垜浠殑搴旂敤紼嬪簭鏉ャ傚亣璁炬垜鎯充慨鏀筳ava.lang.Class錛岃瀹冨湪鏌愪簺鎯呭喌涓嬫墦鍗版煇縐嶄俊鎭傞鍏堝繀欏繪壘鍑烘爣鍑嗘簮鐮侊紒褰撲綘涓嬭澆JDK 濂椾歡騫跺畨瑁呭Ε褰擄紝浣犱細鍙戠幇jdk150\src\java\lang 鐩綍錛堣鍥?0錛変箣涓湁Class.java錛岃繖灝辨槸鎴戜滑姝ゆ琛屽姩鐨勬爣鍑嗘簮鐮併傚浠藉悗鍔犱互淇敼錛岀紪璇戣幏寰桟lass.class銆傛帴涓嬫潵鍑嗗灝?class 鎼Щ鍒癹dk150\jre\lib\endorsed錛堣鍥?0錛夈?br> 
榪欐槸涓涓崄鍒嗙壒鍒殑鐩綍錛宑lass loader灝嗕紭鍏堜粠璇ュ璇誨彇鍐呭惈classes鐨?jar鏂囦歡鈥斺旀垚鍔熺殑鏉′歡鏄?jar鍐呯殑classes鍘嬬緝璺緞蹇呴』鍜孞ava鏍囧噯搴撶殑璺緞瀹屽叏鐩稿悓銆備負姝わ紝鎴戜滑鍙互灝嗗垰鎵嶅仛鍑虹殑Class.class鍏堟惉鍒頒竴涓負姝ょ洰鐨勮屽埢鎰忓仛鍑烘潵鐨刓java\lang鐩綍涓紝鍘嬬緝涓篺oo.zip錛堜換鎰忓懡鍚嶏紝鍞渶澶瑰甫璺緞java\lang錛夛紝鍐嶅皢榪欎釜foo.zip鎼埌jdk150\jre\lib\endorsed騫舵敼鍚嶄負foo.jar銆傛鍚庝綘鐨勫簲鐢ㄧ▼搴忎究浼氫紭鍏堢敤涓婅繖閲岀殑java.lang.Class銆傛暣涓繃紼嬪彲鍐欐垚涓涓壒澶勭悊鏂囦歡錛坆atch file錛夛紝濡傚浘11錛屽湪DOS Box涓嬌鐢ㄣ?br> 
 
鍥?0錛欽DK1.5 瀹夎鍚庣殑鐩綍緇勭粐銆傚叾涓殑endorsed 鏄垜鏂板緩銆?br> 
del e:\java\lang\*.class //娓呯悊騫插噣
del c:\jdk150\jre\lib\endorsed\foo.jar //娓呯悊騫插噣
c:
cd c:\jdk150\src\java\lang
javac -Xlint:unchecked Class.java //緙栬瘧婧愮爜
javac -Xlint:unchecked ClassLoader.java //緙栬瘧鍙︿竴涓簮鐮侊紙濡傛湁蹇呰錛?br>move *.class e:\java\lang //鎼Щ鑷沖埢鎰忓埗閫犵殑鐩綍涓?br>e:
cd e:\java\lang //浠ヤ笅鍘嬬緝鑷抽傚綋鐩綍
pkzipc -add -path=root c:\jdk150\jre\lib\endorsed\foo.jar *.class
cd e:\test //榪涘叆嫻嬭瘯鐩綍
javac -Xlint:unchecked Test.java //緙栬瘧嫻嬭瘯紼嬪簭
java Test //鎵ц嫻嬭瘯紼嬪簭
鍥?1錛氫竴涓彲鍦―OS Box涓嬌鐢ㄧ殑鎵瑰鐞嗘枃浠訛紙batch file錛夛紝鐢ㄤ互鑷姩鍖杍ava.lang.Class
鐨勪慨鏀瑰姩浣溿侾kzipc(.exe)鏄釜鍛戒護鍒楀帇緙╁伐鍏鳳紝add鍜宲ath閮芥槸鍏跺懡浠ゃ?br> 
鏇村淇℃伅
浠ヤ笅鏄閲庢墍鍙婁笌鏈枃涓婚鐩稿叧鐨勬洿澶氳璁恒傝繖浜涗俊鎭彲浠ュ譏琛ュ洜鏂囩珷綃囧箙闄愬埗鑰屽甫鏉ョ殑涓嶈凍錛屾垨甯︾粰鎮(zhèn)ㄦ洿澶氳閲庛?br> 
l         "Take an in-depth look at the Java Reflection API -- Learn about the new Java 1.1 tools forfinding out information about classes", by Chuck McManis銆傛綃囨枃绔犳墍闄勭▼搴忎唬鐮佹槸鏈枃紺轟緥紼嬪簭鐨勪富瑕佷緷鎹紙鏈枃紺轟緥紼嬪簭紺鴻寖浜嗘洿澶歊eflection APIs錛屽茍閲囩敤JDK1.5 鏂板紡鐨刦or-loop 鍐欐硶錛夈?br>l        



]]>
Java1.5璇█鏂扮壒鎬х畝鍗曟葷粨(杞?http://www.tkk7.com/yc1354/archive/2007/06/14/124320.html璧墊案瓚?/dc:creator>璧墊案瓚?/author>Thu, 14 Jun 2007 06:38:00 GMThttp://www.tkk7.com/yc1354/archive/2007/06/14/124320.htmlhttp://www.tkk7.com/yc1354/comments/124320.htmlhttp://www.tkk7.com/yc1354/archive/2007/06/14/124320.html#Feedback0http://www.tkk7.com/yc1354/comments/commentRss/124320.htmlhttp://www.tkk7.com/yc1354/services/trackbacks/124320.html1. 鑷姩瑁呯涓庢媶綆?瀵瑰簲C#
銆銆
銆銆渚?.1
銆銆Integer i = 10;
銆銆int j = i;
銆銆
銆銆2. 鏇翠紭鍖栫殑for寰幆 瀵瑰簲灝盋#---foreach寰幆
銆銆
銆銆渚?.1
銆銆String[] names = {"BadBoy","GoodBoy","HappyGirl","sadGirl"};
銆銆for(String option: names) {
銆銆System.out.println(option);
銆銆}
銆銆
銆銆渚?.2 鍔犳硾鍨?瀵瑰簲C++妯℃澘
銆銆import java.util.*;
銆銆
銆銆ArrayList<String> animals = new ArrayList<String>();
銆銆animals.add("Dog");
銆銆animals.add("Cat");
銆銆animals.add("Chick");
銆銆animals.add("Cow");
銆銆for(String option : animals) {
銆銆System.out.println(option);
銆銆}
銆銆
銆銆3.鍙傛暟鍙彉鐨勬柟娉曞拰printf
銆銆
銆銆渚?.1
銆銆瀹氫箟:
銆銆public int sum(int... n) {銆//浼犺繃鏉涓轟竴涓猧nt鍨嬫暟緇?br>銆銆int tempSum;
銆銆for(int option : n) {
銆銆tempSum+=option;
銆銆}
銆銆/*
銆銆for(int i = 0; i < n.length; i++) {
銆銆tempSum+=n[i];
銆銆}
銆銆*/
銆銆return tempSum;
銆銆}
銆銆璋冪敤1: sum(1);
銆銆璋冪敤2: sum(1,2);
銆銆璋冪敤3: sum(1,2,3,4);
銆銆
銆銆渚?.2 printf鏂規(guī)硶,銆瀵瑰簲c璇█鐨刾rintf
銆銆int x = 10;
銆銆int y = 20;
銆銆int sum = x + y;
銆銆System.out.printf("%d + %d = %d",x,y,sum);
銆銆
銆銆4. 鏋氫婦
銆銆
銆銆渚?.1
銆銆public enum MyColors {
銆銆red,
銆銆black,
銆銆blue,
銆銆green,
銆銆yellow
銆銆}
銆銆
銆銆MyColors color = MyColors.red;
銆銆for(MyColors option : color.values()) {
銆銆System.out.println(option);
銆銆}
銆銆
銆銆/**涓嶈兘鍦╯witch璇彞閲岃繖鏍峰啓case MyColors.red:
銆銆*榪欐牱緙栬瘧鍣ㄤ笉浼氳浣犻氳繃*/
銆銆switch(color) {
銆銆case red:
銆銆System.out.println("best color is "+red);
銆銆break;
銆銆case black:
銆銆System.out.println("NO " + black);
銆銆break;
銆銆default:
銆銆System.out.println("What");
銆銆break;
銆銆}
銆銆
銆銆5.闈欐佸紩鐢?/strong>
銆銆
銆銆渚?.1
銆銆1.5鐗堟湰浠ュ墠鐨勫啓娉曟槸錛?br>銆銆
銆銆import java.lang.Math; //紼嬪簭寮澶村
銆銆
銆銆...
銆銆
銆銆double x = Math.random();
銆銆1.5鐗堟湰涓彲浠ヨ繖鏍峰啓
銆銆import static java.lang.Math.random; //紼嬪簭寮澶村
銆銆
銆銆...
銆銆
銆銆double x = random();



]]>
鍒嗛殧瀛楃涓?/title><link>http://www.tkk7.com/yc1354/archive/2007/03/26/106391.html</link><dc:creator>璧墊案瓚?/dc:creator><author>璧墊案瓚?/author><pubDate>Mon, 26 Mar 2007 06:12:00 GMT</pubDate><guid>http://www.tkk7.com/yc1354/archive/2007/03/26/106391.html</guid><wfw:comment>http://www.tkk7.com/yc1354/comments/106391.html</wfw:comment><comments>http://www.tkk7.com/yc1354/archive/2007/03/26/106391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/yc1354/comments/commentRss/106391.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/yc1354/services/trackbacks/106391.html</trackback:ping><description><![CDATA[ <p>import java.util.*;<br />public class TokenTest2{<br />聽<br />聽public static void main(String[] args){<br />聽 <br />聽 StringTokenizer st=new StringTokenizer("this is a test","e",true);<br />聽 while(st.hasMoreTokens()){<br />聽聽 System.out.println(st.nextToken());<br />聽聽 <br />聽 }<br />聽}<br />}<br />緇撴灉 錛?br />this is a t<br />e<br />st<br />聽<br />public class StringTokenizer</p> <p>extends Object <br />implements Enumeration<Object> <br />string tokenizer 綾誨厑璁稿簲鐢ㄧ▼搴忓皢瀛楃涓插垎瑙d負鏍囪銆倀okenization 鏂規(guī)硶姣?StreamTokenizer 綾繪墍浣跨敤鐨勬柟娉曟洿綆鍗曘係tringTokenizer 鏂規(guī)硶涓嶅尯鍒嗘爣璇嗙銆佹暟鍜屽甫寮曞彿鐨勫瓧絎︿覆錛屽畠浠篃涓嶈瘑鍒茍璺寵繃娉ㄩ噴銆?/p> <p>鍙互鍦ㄥ垱寤烘椂鎸囧畾錛屼篃鍙互鏍規(guī)嵁姣忎釜鏍囪鏉ユ寚瀹氬垎闅旂錛堝垎闅旀爣璁扮殑瀛楃錛夐泦鍚堛?/p> <p>StringTokenizer 鐨勫疄渚嬫湁涓ょ琛屼負鏂瑰紡錛岃繖鍙栧喅浜庡畠鍦ㄥ垱寤烘椂浣跨敤鐨?returnDelims 鏍囧織鐨勫兼槸 true 榪樻槸 false錛?/p> <p>濡傛灉鏍囧織涓?false錛屽垯鍒嗛殧絎﹀瓧絎︾敤鏉ュ垎闅旀爣璁般傛爣璁版槸榪炵畫瀛楃錛堜笉鏄垎闅旂錛夌殑鏈澶у簭鍒椼?<br />濡傛灉鏍囧織涓?true錛屽垯璁や負閭d簺鍒嗛殧絎﹀瓧絎︽湰韜嵆涓烘爣璁般傚洜姝ゆ爣璁拌涔堟槸涓涓垎闅旂瀛楃錛岃涔堟槸閭d簺榪炵畫瀛楃錛堜笉鏄垎闅旂錛夌殑鏈澶у簭鍒椼?<br />StringTokenizer 瀵硅薄鍦ㄥ唴閮ㄧ淮鎶ゅ瓧絎︿覆涓琚爣璁扮殑褰撳墠浣嶇疆銆傛煇浜涙搷浣滃皢姝ゅ綋鍓嶄綅緗Щ鑷沖凡澶勭悊鐨勫瓧絎﹀悗銆?/p> <p>閫氳繃鎴彇瀛楃涓茬殑涓涓瓙涓叉潵榪斿洖鏍囪錛岃瀛楃涓茬敤浜庡垱寤?StringTokenizer 瀵硅薄銆?/p> <p>涓嬮潰鏄竴涓嬌鐢?tokenizer 鐨勫疄渚嬨備唬鐮佸涓嬶細</p> <p>聽聽聽聽 StringTokenizer st = new StringTokenizer("this is a test");<br />聽聽聽聽 while (st.hasMoreTokens()) {<br />聽聽聽聽聽聽聽聽 System.out.println(st.nextToken());<br />聽聽聽聽 }<br />聽</p> <p>杈撳嚭浠ヤ笅瀛楃涓詫細</p> <p>聽聽聽聽 this<br />聽聽聽聽 is<br />聽聽聽聽 a<br />聽聽聽聽 test<br />聽</p> <p>StringTokenizer 鏄嚭浜庡吋瀹規(guī)х殑鍘熷洜鑰岃淇濈暀鐨勯仐鐣欑被錛堣櫧鐒跺湪鏂頒唬鐮佷腑騫朵笉榧撳姳浣跨敤瀹冿級銆傚緩璁墍鏈夊姹傛鍔熻兘鐨勪漢浣跨敤 String 鐨?split 鏂規(guī)硶鎴?java.util.regex 鍖呫?/p> <p>涓嬮潰鐨勭ず渚嬮槓鏄庝簡濡備綍浣跨敤 String.split 鏂規(guī)硶灝嗗瓧絎︿覆鍒嗚В涓哄熀鏈爣璁幫細</p> <p>聽聽聽聽 String[] result = "this is a test".split("<a href="file://\\s">\\s</a>");<br />聽聽聽聽 for (int x=0; x<result.length; x++)<br />聽聽聽聽聽聽聽聽 System.out.println(result[x]);<br />聽</p> <p>杈撳嚭浠ヤ笅瀛楃涓詫細</p> <p>聽聽聽聽 this<br />聽聽聽聽 is<br />聽聽聽聽 a<br />聽聽聽聽 test</p> <p>聽</p> <img src ="http://www.tkk7.com/yc1354/aggbug/106391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/yc1354/" target="_blank">璧墊案瓚?/a> 2007-03-26 14:12 <a href="http://www.tkk7.com/yc1354/archive/2007/03/26/106391.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璇誨彇*.properties鏂囦歡鐨勬柟娉?/title><link>http://www.tkk7.com/yc1354/archive/2007/02/01/97261.html</link><dc:creator>璧墊案瓚?/dc:creator><author>璧墊案瓚?/author><pubDate>Thu, 01 Feb 2007 06:41:00 GMT</pubDate><guid>http://www.tkk7.com/yc1354/archive/2007/02/01/97261.html</guid><wfw:comment>http://www.tkk7.com/yc1354/comments/97261.html</wfw:comment><comments>http://www.tkk7.com/yc1354/archive/2007/02/01/97261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/yc1354/comments/commentRss/97261.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/yc1354/services/trackbacks/97261.html</trackback:ping><description><![CDATA[ <br />public class SysUtils{<br /><br />Properties property = new Properties();<br />InputStream is = null;<br />try{<br />is = SysUtils.class.getClassLoader().getResourceAsStream("system.properties");<br />property.load(is);<br />String s = property.getProperty("CMS_URL");<br />}catch(Excption e){<br />System.out.println("hi"):<br />}<br /><br /><br />}<img src ="http://www.tkk7.com/yc1354/aggbug/97261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/yc1354/" target="_blank">璧墊案瓚?/a> 2007-02-01 14:41 <a href="http://www.tkk7.com/yc1354/archive/2007/02/01/97261.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://www8x5188x.com" target="_blank">可以免费观看的一级毛片</a>| <a href="http://0939666.com" target="_blank">国产在线ts人妖免费视频</a>| <a href="http://shmtweld.com" target="_blank">亚洲av综合色区</a>| <a href="http://tqdrhj.com" target="_blank">国产一级婬片A视频免费观看</a>| <a href="http://jyd56.com" target="_blank">亚洲国产精品尤物YW在线观看</a>| <a href="http://137499.com" target="_blank">男人免费视频一区二区在线观看</a>| <a href="http://shunfk.com" target="_blank">国产三级免费观看</a>| <a href="http://delvheng.com" target="_blank">日韩在线观看免费</a>| <a href="http://k8h9.com" target="_blank">亚洲人成人77777网站</a>| <a href="http://jiggybaby.com" target="_blank">曰批全过程免费视频在线观看无码</a>| <a href="http://0730jxpm.com" target="_blank">亚洲av无码国产精品夜色午夜 </a>| <a href="http://zjfxjy.com" target="_blank">国产大片91精品免费看3</a>| <a href="http://wwwxue1888.com" target="_blank">亚洲AV噜噜一区二区三区</a>| <a href="http://yw762.com" target="_blank">免费国产一级特黄久久</a>| <a href="http://bj-tkld.com" target="_blank">一级女性全黄久久生活片免费</a>| <a href="http://alodaba.com" target="_blank">亚洲中文字幕无码日韩</a>| <a href="http://0730jxpm.com" target="_blank">免费在线中文日本</a>| <a href="http://b7277.com" target="_blank">亚洲香蕉在线观看</a>| <a href="http://zaideqin.com" target="_blank">国产一级淫片a免费播放口之</a>| <a href="http://tianmao920.com" target="_blank">特a级免费高清黄色片 </a>| <a href="http://haha02.com" target="_blank">无码国产精品一区二区免费式芒果 </a>| <a href="http://haha02.com" target="_blank">国产1000部成人免费视频</a>| <a href="http://72c5.com" target="_blank">亚洲熟伦熟女专区hd高清</a>| <a href="http://wenfaka.com" target="_blank">亚洲国产精品无码久久久久久曰</a>| <a href="http://wwyw99977.com" target="_blank">中文字幕免费人成乱码中国</a>| <a href="http://pchbgs.com" target="_blank">99久久亚洲综合精品成人网</a>| <a href="http://shaiyahx.com" target="_blank">A级毛片内射免费视频</a>| <a href="http://7755ga.com" target="_blank">天堂亚洲免费视频</a>| <a href="http://plladay.com" target="_blank">亚洲色欲www综合网</a>| <a href="http://wwwkckc.com" target="_blank">又粗又硬又黄又爽的免费视频</a>| <a href="http://0515zs.com" target="_blank">成人免费乱码大片A毛片</a>| <a href="http://502274.com" target="_blank">亚洲小说区图片区</a>| <a href="http://www-887234.com" target="_blank">成人伊人亚洲人综合网站222</a>| <a href="http://5gg1.com" target="_blank">天黑黑影院在线观看视频高清免费</a>| <a href="http://sdnuoyuan.com" target="_blank">亚洲成年人电影网站</a>| <a href="http://www-715111.com" target="_blank">亚洲A丁香五香天堂网 </a>| <a href="http://6132423.com" target="_blank">啦啦啦手机完整免费高清观看</a>| <a href="http://hhgcnet.com" target="_blank">国产免费人成视频在线播放播</a>| <a href="http://002309.com" target="_blank">亚洲无圣光一区二区</a>| <a href="http://lyjhjx.com" target="_blank">亚洲国产成人精品久久久国产成人一区二区三区综 </a>| <a href="http://html5text.com" target="_blank">免费无码作爱视频</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>