<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Java...</title>
	<atom:link href="http://yanwt.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://yanwt.wordpress.com</link>
	<description>javaå°±åƒ?æ˜¯ä¸€æ?¯é…’å?ªæœ‰ç»†ç»†çš„å“?å‘³æ‰?èƒ½çœŸæ­£æ‡‚å¾—</description>
	<lastBuildDate>Thu, 10 Nov 2005 03:46:43 +0000</lastBuildDate>
	<language></language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='yanwt.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Java...</title>
		<link>http://yanwt.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://yanwt.wordpress.com/osd.xml" title="Java..." />
	<atom:link rel='hub' href='http://yanwt.wordpress.com/?pushpress=hub'/>
		<item>
		<title>è§„åˆ™å¼•æ“Žç®€ä»‹</title>
		<link>http://yanwt.wordpress.com/2005/11/10/%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e7%ae%80%e4%bb%8b/</link>
		<comments>http://yanwt.wordpress.com/2005/11/10/%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e7%ae%80%e4%bb%8b/#comments</comments>
		<pubDate>Thu, 10 Nov 2005 03:46:43 +0000</pubDate>
		<dc:creator>yanwt</dc:creator>
				<category><![CDATA[æœªåˆ†é¡žÂ·Uncategorized]]></category>

		<guid isPermaLink="false">http://yanwt.wordpress.com/2005/11/10/%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e7%ae%80%e4%bb%8b/</guid>
		<description><![CDATA[Javaè§„åˆ™å¼•æ“Žæ˜¯æŽ¨ç?†å¼•æ“Žçš„ä¸€ç§?ï¼Œå®ƒèµ·æº?äºŽåŸºäºŽè§„åˆ™çš„ä¸“å®¶ç³»ç»Ÿã€‚ Javaè§„åˆ™å¼•æ“Žå°†ä¸šåŠ¡å†³ç­–ä»Žåº”ç”¨ç¨‹åº?ä»£ç ?ä¸­åˆ†ç¦»å‡ºæ?¥ï¼Œå¹¶ä½¿ç”¨é¢„å®šä¹‰çš„è¯­ä¹‰æ¨¡å?—ç¼–å†™ä¸šåŠ¡å†³ç­–ã€‚Javaè§„åˆ™å¼•æ“ŽæŽ¥å?—æ•°æ?®è¾“å…¥ï¼Œè§£é‡Šä¸šåŠ¡è§„åˆ™ï¼Œå¹¶æ ¹æ?®è§„åˆ™ä½œå‡ºä¸šåŠ¡å†³ç­–ã€‚ä»Žè¿™ä¸ªæ„?ä¹‰ä¸Šæ?¥è¯´ï¼Œå®ƒæ˜¯è½¯ä»¶æ–¹æ³•å­¦åœ¨&#8221;å…³æ³¨ç‚¹åˆ†ç¦»&#8221;ä¸Šçš„ä¸€ä¸ªé‡?è¦?çš„è¿›å±•ã€‚ JSR-94è§„èŒƒå®šä¹‰äº†ç‹¬ç«‹äºŽåŽ‚å•†çš„æ ‡å‡†APIï¼Œå¼€å?‘äººå‘˜å?¯ä»¥é€šè¿‡è¿™ä¸ªæ ‡å‡†çš„APIä½¿ç”¨Javaè§„åˆ™å¼•æ“Žè§„èŒƒçš„ä¸?å?Œäº§å“?å®žçŽ°ã€‚ä½†å€¼å¾—æ³¨æ„?çš„æ˜¯ï¼Œè¿™ä¸ªè§„èŒƒå¹¶æ²¡æœ‰å¼ºåˆ¶ç»Ÿä¸€è§„åˆ™å®šä¹‰çš„è¯­æ³•ï¼Œå› æ­¤ï¼Œå½“éœ€è¦?å°†åº”ç”¨ç§»æ¤?åˆ°å…¶ä»–çš„Javaè§„åˆ™å¼•æ“Žå®žçŽ°æ—¶ï¼Œå?¯èƒ½éœ€è¦?å?˜æ?¢è§„åˆ™å®šä¹‰ã€‚ åŸºäºŽè§„åˆ™çš„ä¸“å®¶ç³»ç»Ÿï¼ˆRBESï¼‰ ä¸“å®¶ç³»ç»Ÿæ˜¯äººå·¥æ™ºèƒ½çš„ä¸€ä¸ªåˆ†æ”¯ï¼Œå®ƒæ¨¡ä»¿äººç±»çš„æŽ¨ç?†æ–¹å¼?ï¼Œä½¿ç”¨è¯•æŽ¢æ€§çš„æ–¹æ³•è¿›è¡ŒæŽ¨ç?†ï¼Œå¹¶ä½¿ç”¨äººç±»èƒ½ç?†è§£çš„æœ¯è¯­è§£é‡Šå’Œè¯?æ˜Žå®ƒçš„æŽ¨ç?†ç»“è®ºã€‚ä¸“å®¶ç³»ç»Ÿæœ‰å¾ˆå¤šåˆ†ç±»ï¼šç¥žç»?ç½‘ç»œã€?åŸºäºŽæ¡ˆä¾‹æŽ¨ç?†å’ŒåŸºäºŽè§„åˆ™ç³»ç»Ÿç­‰ã€‚ è§„åˆ™å¼•æ“Žåˆ™æ˜¯åŸºäºŽè§„åˆ™çš„ä¸“å®¶ç³»ç»Ÿçš„ä¸€éƒ¨åˆ†ã€‚ä¸ºäº†æ›´æ·±å…¥çš„äº†è§£Javaè§„åˆ™å¼•æ“Žï¼Œä¸‹é?¢ç®€è¦?åœ°ä»‹ç»?åŸºäºŽè§„åˆ™çš„ä¸“å®¶ç³»ç»Ÿï¼ˆRBESï¼‰ã€‚ RBESçš„æŠ€æœ¯æž¶æž„ RBESåŒ…æ‹¬ä¸‰éƒ¨åˆ†ï¼šRule Baseï¼ˆknowledge baseï¼‰ã€?Working Memoryï¼ˆfact baseï¼‰å’ŒRule Engineï¼ˆæŽ¨ç?†å¼•æ“Žï¼‰ã€‚å®ƒä»¬çš„ç»“æž„å¦‚ä¸‹æ‰€ç¤ºï¼š å¦‚ä¸Šå›¾æ‰€ç¤ºï¼Œè§„åˆ™å¼•æ“ŽåŒ…æ‹¬ä¸‰éƒ¨åˆ†ï¼šPattern Matcherã€?Agendaå’ŒExecution Engineã€‚Pattern Matcherå†³å®šé€‰æ‹©æ‰§è¡Œå“ªä¸ªè§„åˆ™ï¼Œä½•æ—¶æ‰§è¡Œè§„åˆ™ï¼›Agendaç®¡ç?†PatternMatcheræŒ‘é€‰å‡ºæ?¥çš„è§„åˆ™çš„æ‰§è¡Œæ¬¡åº?ï¼›Execution Engineè´Ÿè´£æ‰§è¡Œè§„åˆ™å’Œå…¶ä»–åŠ¨ä½œã€‚ RBESçš„æŽ¨ç?†ï¼ˆè§„åˆ™ï¼‰å¼•æ“Ž å’Œäººç±»çš„æ€?ç»´ç›¸å¯¹åº”ï¼Œè§„åˆ™å¼•æ“Žå­˜åœ¨ä¸¤è€…æŽ¨ç?†æ–¹å¼?ï¼šæ¼”ç»Žæ³•ï¼ˆForward-Chainingï¼‰å’Œå½’çº³æ³•ï¼ˆBackward-Chainingï¼‰ã€‚æ¼”ç»Žæ³•ä»Žä¸€ä¸ªåˆ?å§‹çš„äº‹å®žå‡ºå?‘ï¼Œä¸?æ–­åœ°åº”ç”¨è§„åˆ™å¾—å‡ºç»“è®ºï¼ˆæˆ–æ‰§è¡ŒæŒ‡å®šçš„åŠ¨ä½œï¼‰ã€‚è€Œå½’çº³æ³•åˆ™æ˜¯ä»Žå?‡è®¾å‡ºå?‘ï¼Œä¸?æ–­åœ°å¯»æ‰¾ç¬¦å?ˆå?‡è®¾çš„äº‹å®žã€‚ Reteç®—æ³•æ˜¯ç›®å‰?æ•ˆçŽ‡æœ€é«˜çš„ä¸€ä¸ªForward-ChainingæŽ¨ç?†ç®—æ³•ï¼ŒDroolsé¡¹ç›®æ˜¯Reteç®—æ³•çš„ä¸€ä¸ªé?¢å?‘å¯¹è±¡çš„Javaå®žçŽ°ã€‚ è§„åˆ™å¼•æ“Žçš„æŽ¨ç?†æ­¥éª¤å¦‚ä¸‹ï¼š 1. å°†åˆ?å§‹æ•°æ?®ï¼ˆfactï¼‰è¾“å…¥Working Memoryã€‚ 2. ä½¿ç”¨Pattern Matcheræ¯”è¾ƒè§„åˆ™ï¼ˆruleï¼‰å’Œæ•°æ?®ï¼ˆfactï¼‰ã€‚ 3. å¦‚æžœæ‰§è¡Œè§„åˆ™å­˜åœ¨å†²çª?ï¼ˆconflictï¼‰ï¼Œå?³å?Œæ—¶æ¿€æ´»äº†å¤šä¸ªè§„åˆ™ï¼Œå°†å†²çª?çš„è§„åˆ™æ”¾å…¥å†²çª?é›†å?ˆã€‚ 4. è§£å†³å†²çª?ï¼Œå°†æ¿€æ´»çš„è§„åˆ™æŒ‰é¡ºåº?æ”¾å…¥Agendaã€‚ 5. ä½¿ç”¨è§„åˆ™å¼•æ“Žæ‰§è¡ŒAgendaä¸­çš„è§„åˆ™ã€‚é‡?å¤?æ­¥éª¤2è‡³5ï¼Œç›´åˆ°æ‰§è¡Œå®Œæ¯•æ‰€æœ‰Agendaä¸­çš„è§„åˆ™ã€‚ JSR 94ï¼šJavaè§„åˆ™å¼•æ“ŽAPI åŸºäºŽè§„åˆ™ç¼–ç¨‹æ˜¯ä¸€ç§?å£°æ˜Žå¼?çš„ç¼–ç¨‹æŠ€æœ¯ï¼Œè¿™ç§?æŠ€æœ¯è®©ä½ å?¯ä»¥ä½¿ç”¨è¯•æŽ¢æ€§çš„è§„åˆ™è€Œä¸?æ˜¯è¿‡ç¨‹æ€§çš„æŒ‡ä»¤æ?¥è§£å†³é—®é¢˜ã€‚è§„åˆ™å¼•æ“Žæ˜¯ä¸€ä¸ªè½¯ä»¶æ¨¡å?—ï¼Œå®ƒå†³å®šäº†å¦‚ä½•å°†è§„åˆ™ä½œç”¨äºŽæŽ¨ç?†æ•°æ?®ã€‚åœ¨ä¿?é™©ä¸šå’Œé‡‘èž?æœ?åŠ¡ä¸šéƒ½å¹¿æ³›åœ°ä½¿ç”¨äº†åŸºäºŽè§„åˆ™çš„ç¼–ç¨‹æŠ€æœ¯ï¼Œå½“éœ€è¦?åœ¨å¤§é‡?çš„æ•°æ?®ä¸Šåº”ç”¨å¤?æ?‚çš„è§„åˆ™æ—¶ï¼Œè§„åˆ™å¼•æ“ŽæŠ€æœ¯ç‰¹åˆ«æœ‰ç”¨ã€‚ Javaè§„åˆ™å¼•æ“ŽAPIç”±javax.rulesåŒ…å®šä¹‰ï¼Œæ˜¯è®¿é—®è§„åˆ™å¼•æ“Žçš„æ ‡å‡†ä¼?ä¸šçº§APIã€‚Javaè§„åˆ™å¼•æ“ŽAPIå…?è®¸å®¢æˆ·ç¨‹åº?ä½¿ç”¨ç»Ÿä¸€çš„æ–¹å¼?å’Œä¸?å?ŒåŽ‚å•†çš„è§„åˆ™å¼•æ“Žäº§å“?äº¤äº’ï¼Œå°±åƒ?ä½¿ç”¨JDBCç¼–å†™ç‹¬ç«‹äºŽåŽ‚å•†è®¿é—®ä¸?å?Œçš„æ•°æ?®åº“äº§å“?ä¸€æ ·ã€‚Javaè§„åˆ™å¼•æ“ŽAPIåŒ…æ‹¬åˆ›å»ºå’Œç®¡ç?†è§„åˆ™é›†å?ˆçš„æœºåˆ¶ï¼Œåœ¨Working Memoryä¸­æ·»åŠ ï¼Œåˆ é™¤å’Œä¿®æ”¹å¯¹è±¡çš„æœºåˆ¶ï¼Œä»¥å?Šåˆ?å§‹åŒ–ï¼Œé‡?ç½®å’Œæ‰§è¡Œè§„åˆ™å¼•æ“Žçš„æœºåˆ¶ã€‚ ä½¿ç”¨Javaè§„åˆ™å¼•æ“ŽAPI Javaè§„åˆ™å¼•æ“ŽAPIæŠŠå’Œè§„åˆ™å¼•æ“Žçš„äº¤äº’åˆ†ä¸ºä¸¤ç±»ï¼šç®¡ç?†æ´»åŠ¨å’Œè¿?è¡Œæ—¶æ´»åŠ¨ã€‚ç®¡ç?†æ´»åŠ¨åŒ…æ‹¬å®žä¾‹åŒ–è§„åˆ™å¼•æ“Žå’Œè£…è½½è§„åˆ™ã€‚è€Œè¿?è¡Œæ—¶æ´»åŠ¨åŒ…æ‹¬æ“?ä½œWorking Memoryå’Œæ‰§è¡Œè§„åˆ™ã€‚å¦‚æžœä½ åœ¨J2SEçŽ¯å¢ƒä¸­ä½¿ç”¨Javaè§„åˆ™å¼•æ“Žï¼Œä½ å?¯èƒ½éœ€è¦?åœ¨ä»£ç ?ä¸­æ‰§è¡Œä»¥ä¸Šæ‰€æœ‰çš„æ´»åŠ¨ã€‚ç›¸å??ï¼Œåœ¨J2EEçŽ¯å¢ƒä¸­ï¼ŒJavaè§„åˆ™å¼•æ“Žçš„ç®¡ç?†æ´»åŠ¨æ˜¯åº”ç”¨æœ?åŠ¡å™¨çš„ä¸€éƒ¨åˆ†ã€‚JSR 94çš„å?‚è€ƒå®žçŽ°åŒ…æ‹¬äº†ä¸€ä¸ªJCAè¿žæŽ¥å™¨ï¼Œç”¨äºŽé€šè¿‡JNDIèŽ·å¾—ä¸€ä¸ªRuleServiceProviderã€‚ è®¾ç½®è§„åˆ™å¼•æ“Ž Javaè§„åˆ™å¼•æ“Žçš„ç®¡ç?†æ´»åŠ¨é˜¶æ®µå¼€å§‹äºŽæŸ¥æ‰¾ä¸€ä¸ªå?ˆé€‚çš„javax.rules.RuleServiceProviderå¯¹è±¡ï¼Œè¿™ä¸ªå¯¹è±¡æ˜¯åº”ç”¨ç¨‹åº?è®¿é—®è§„åˆ™å¼•æ“Žçš„å…¥å?£ã€‚åœ¨J2EEçŽ¯å¢ƒä¸­ï¼Œä½ å?¯èƒ½å?¯ä»¥é€šè¿‡JNDIèŽ·å¾—RuleServiceProviderã€‚å?¦åˆ™ï¼Œä½ å?¯ä»¥ä½¿ç”¨javax.rules.RuleServiceProviderManagerç±»ï¼š javax.rules.RuleServiceProviderManager class: String implName = &#8220;org.jcp.jsr94.ri.RuleServiceProvider&#8221;; Class.forName(implName); RuleServiceProvider serviceProvider = [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=13&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Javaè§„åˆ™å¼•æ“Žæ˜¯æŽ¨ç?†å¼•æ“Žçš„ä¸€ç§?ï¼Œå®ƒèµ·æº?äºŽåŸºäºŽè§„åˆ™çš„ä¸“å®¶ç³»ç»Ÿã€‚<br />      Javaè§„åˆ™å¼•æ“Žå°†ä¸šåŠ¡å†³ç­–ä»Žåº”ç”¨ç¨‹åº?ä»£ç ?ä¸­åˆ†ç¦»å‡ºæ?¥ï¼Œå¹¶ä½¿ç”¨é¢„å®šä¹‰çš„è¯­ä¹‰æ¨¡å?—ç¼–å†™ä¸šåŠ¡å†³ç­–ã€‚Javaè§„åˆ™å¼•æ“ŽæŽ¥å?—æ•°æ?®è¾“å…¥ï¼Œè§£é‡Šä¸šåŠ¡è§„åˆ™ï¼Œå¹¶æ ¹æ?®è§„åˆ™ä½œå‡ºä¸šåŠ¡å†³ç­–ã€‚ä»Žè¿™ä¸ªæ„?ä¹‰ä¸Šæ?¥è¯´ï¼Œå®ƒæ˜¯è½¯ä»¶æ–¹æ³•å­¦åœ¨&#8221;å…³æ³¨ç‚¹åˆ†ç¦»&#8221;ä¸Šçš„ä¸€ä¸ªé‡?è¦?çš„è¿›å±•ã€‚<br />      JSR-94è§„èŒƒå®šä¹‰äº†ç‹¬ç«‹äºŽåŽ‚å•†çš„æ ‡å‡†APIï¼Œå¼€å?‘äººå‘˜å?¯ä»¥é€šè¿‡è¿™ä¸ªæ ‡å‡†çš„APIä½¿ç”¨Javaè§„åˆ™å¼•æ“Žè§„èŒƒçš„ä¸?å?Œäº§å“?å®žçŽ°ã€‚ä½†å€¼å¾—æ³¨æ„?çš„æ˜¯ï¼Œè¿™ä¸ªè§„èŒƒå¹¶æ²¡æœ‰å¼ºåˆ¶ç»Ÿä¸€è§„åˆ™å®šä¹‰çš„è¯­æ³•ï¼Œå› æ­¤ï¼Œå½“éœ€è¦?å°†åº”ç”¨ç§»æ¤?åˆ°å…¶ä»–çš„Javaè§„åˆ™å¼•æ“Žå®žçŽ°æ—¶ï¼Œå?¯èƒ½éœ€è¦?å?˜æ?¢è§„åˆ™å®šä¹‰ã€‚</p>
<p>åŸºäºŽè§„åˆ™çš„ä¸“å®¶ç³»ç»Ÿï¼ˆRBESï¼‰<br />       ä¸“å®¶ç³»ç»Ÿæ˜¯äººå·¥æ™ºèƒ½çš„ä¸€ä¸ªåˆ†æ”¯ï¼Œå®ƒæ¨¡ä»¿äººç±»çš„æŽ¨ç?†æ–¹å¼?ï¼Œä½¿ç”¨è¯•æŽ¢æ€§çš„æ–¹æ³•è¿›è¡ŒæŽ¨ç?†ï¼Œå¹¶ä½¿ç”¨äººç±»èƒ½ç?†è§£çš„æœ¯è¯­è§£é‡Šå’Œè¯?æ˜Žå®ƒçš„æŽ¨ç?†ç»“è®ºã€‚ä¸“å®¶ç³»ç»Ÿæœ‰å¾ˆå¤šåˆ†ç±»ï¼šç¥žç»?ç½‘ç»œã€?åŸºäºŽæ¡ˆä¾‹æŽ¨ç?†å’ŒåŸºäºŽè§„åˆ™ç³»ç»Ÿç­‰ã€‚<br />       è§„åˆ™å¼•æ“Žåˆ™æ˜¯åŸºäºŽè§„åˆ™çš„ä¸“å®¶ç³»ç»Ÿçš„ä¸€éƒ¨åˆ†ã€‚ä¸ºäº†æ›´æ·±å…¥çš„äº†è§£Javaè§„åˆ™å¼•æ“Žï¼Œä¸‹é?¢ç®€è¦?åœ°ä»‹ç»?åŸºäºŽè§„åˆ™çš„ä¸“å®¶ç³»ç»Ÿï¼ˆRBESï¼‰ã€‚</p>
<p>  RBESçš„æŠ€æœ¯æž¶æž„<br />       RBESåŒ…æ‹¬ä¸‰éƒ¨åˆ†ï¼šRule Baseï¼ˆknowledge baseï¼‰ã€?Working Memoryï¼ˆfact baseï¼‰å’ŒRule Engineï¼ˆæŽ¨ç?†å¼•æ“Žï¼‰ã€‚å®ƒä»¬çš„ç»“æž„å¦‚ä¸‹æ‰€ç¤ºï¼š</p>
<p>       å¦‚ä¸Šå›¾æ‰€ç¤ºï¼Œè§„åˆ™å¼•æ“ŽåŒ…æ‹¬ä¸‰éƒ¨åˆ†ï¼šPattern Matcherã€?Agendaå’ŒExecution Engineã€‚Pattern Matcherå†³å®šé€‰æ‹©æ‰§è¡Œå“ªä¸ªè§„åˆ™ï¼Œä½•æ—¶æ‰§è¡Œè§„åˆ™ï¼›Agendaç®¡ç?†PatternMatcheræŒ‘é€‰å‡ºæ?¥çš„è§„åˆ™çš„æ‰§è¡Œæ¬¡åº?ï¼›Execution Engineè´Ÿè´£æ‰§è¡Œè§„åˆ™å’Œå…¶ä»–åŠ¨ä½œã€‚</p>
<p>  RBESçš„æŽ¨ç?†ï¼ˆè§„åˆ™ï¼‰å¼•æ“Ž<br />       å’Œäººç±»çš„æ€?ç»´ç›¸å¯¹åº”ï¼Œè§„åˆ™å¼•æ“Žå­˜åœ¨ä¸¤è€…æŽ¨ç?†æ–¹å¼?ï¼šæ¼”ç»Žæ³•ï¼ˆForward-Chainingï¼‰å’Œå½’çº³æ³•ï¼ˆBackward-Chainingï¼‰ã€‚æ¼”ç»Žæ³•ä»Žä¸€ä¸ªåˆ?å§‹çš„äº‹å®žå‡ºå?‘ï¼Œä¸?æ–­åœ°åº”ç”¨è§„åˆ™å¾—å‡ºç»“è®ºï¼ˆæˆ–æ‰§è¡ŒæŒ‡å®šçš„åŠ¨ä½œï¼‰ã€‚è€Œå½’çº³æ³•åˆ™æ˜¯ä»Žå?‡è®¾å‡ºå?‘ï¼Œä¸?æ–­åœ°å¯»æ‰¾ç¬¦å?ˆå?‡è®¾çš„äº‹å®žã€‚<br />       Reteç®—æ³•æ˜¯ç›®å‰?æ•ˆçŽ‡æœ€é«˜çš„ä¸€ä¸ªForward-ChainingæŽ¨ç?†ç®—æ³•ï¼ŒDroolsé¡¹ç›®æ˜¯Reteç®—æ³•çš„ä¸€ä¸ªé?¢å?‘å¯¹è±¡çš„Javaå®žçŽ°ã€‚<br />       è§„åˆ™å¼•æ“Žçš„æŽ¨ç?†æ­¥éª¤å¦‚ä¸‹ï¼š<br />       1. å°†åˆ?å§‹æ•°æ?®ï¼ˆfactï¼‰è¾“å…¥Working Memoryã€‚<br />       2. ä½¿ç”¨Pattern Matcheræ¯”è¾ƒè§„åˆ™ï¼ˆruleï¼‰å’Œæ•°æ?®ï¼ˆfactï¼‰ã€‚<br />       3. å¦‚æžœæ‰§è¡Œè§„åˆ™å­˜åœ¨å†²çª?ï¼ˆconflictï¼‰ï¼Œå?³å?Œæ—¶æ¿€æ´»äº†å¤šä¸ªè§„åˆ™ï¼Œå°†å†²çª?çš„è§„åˆ™æ”¾å…¥å†²çª?é›†å?ˆã€‚<br />       4. è§£å†³å†²çª?ï¼Œå°†æ¿€æ´»çš„è§„åˆ™æŒ‰é¡ºåº?æ”¾å…¥Agendaã€‚<br />       5. ä½¿ç”¨è§„åˆ™å¼•æ“Žæ‰§è¡ŒAgendaä¸­çš„è§„åˆ™ã€‚é‡?å¤?æ­¥éª¤2è‡³5ï¼Œç›´åˆ°æ‰§è¡Œå®Œæ¯•æ‰€æœ‰Agendaä¸­çš„è§„åˆ™ã€‚</p>
<p>JSR 94ï¼šJavaè§„åˆ™å¼•æ“ŽAPI<br />       åŸºäºŽè§„åˆ™ç¼–ç¨‹æ˜¯ä¸€ç§?å£°æ˜Žå¼?çš„ç¼–ç¨‹æŠ€æœ¯ï¼Œè¿™ç§?æŠ€æœ¯è®©ä½ å?¯ä»¥ä½¿ç”¨è¯•æŽ¢æ€§çš„è§„åˆ™è€Œä¸?æ˜¯è¿‡ç¨‹æ€§çš„æŒ‡ä»¤æ?¥è§£å†³é—®é¢˜ã€‚è§„åˆ™å¼•æ“Žæ˜¯ä¸€ä¸ªè½¯ä»¶æ¨¡å?—ï¼Œå®ƒå†³å®šäº†å¦‚ä½•å°†è§„åˆ™ä½œç”¨äºŽæŽ¨ç?†æ•°æ?®ã€‚åœ¨ä¿?é™©ä¸šå’Œé‡‘èž?æœ?åŠ¡ä¸šéƒ½å¹¿æ³›åœ°ä½¿ç”¨äº†åŸºäºŽè§„åˆ™çš„ç¼–ç¨‹æŠ€æœ¯ï¼Œå½“éœ€è¦?åœ¨å¤§é‡?çš„æ•°æ?®ä¸Šåº”ç”¨å¤?æ?‚çš„è§„åˆ™æ—¶ï¼Œè§„åˆ™å¼•æ“ŽæŠ€æœ¯ç‰¹åˆ«æœ‰ç”¨ã€‚<br />       Javaè§„åˆ™å¼•æ“ŽAPIç”±javax.rulesåŒ…å®šä¹‰ï¼Œæ˜¯è®¿é—®è§„åˆ™å¼•æ“Žçš„æ ‡å‡†ä¼?ä¸šçº§APIã€‚Javaè§„åˆ™å¼•æ“ŽAPIå…?è®¸å®¢æˆ·ç¨‹åº?ä½¿ç”¨ç»Ÿä¸€çš„æ–¹å¼?å’Œä¸?å?ŒåŽ‚å•†çš„è§„åˆ™å¼•æ“Žäº§å“?äº¤äº’ï¼Œå°±åƒ?ä½¿ç”¨JDBCç¼–å†™ç‹¬ç«‹äºŽåŽ‚å•†è®¿é—®ä¸?å?Œçš„æ•°æ?®åº“äº§å“?ä¸€æ ·ã€‚Javaè§„åˆ™å¼•æ“ŽAPIåŒ…æ‹¬åˆ›å»ºå’Œç®¡ç?†è§„åˆ™é›†å?ˆçš„æœºåˆ¶ï¼Œåœ¨Working Memoryä¸­æ·»åŠ ï¼Œåˆ é™¤å’Œä¿®æ”¹å¯¹è±¡çš„æœºåˆ¶ï¼Œä»¥å?Šåˆ?å§‹åŒ–ï¼Œé‡?ç½®å’Œæ‰§è¡Œè§„åˆ™å¼•æ“Žçš„æœºåˆ¶ã€‚</p>
<p>ä½¿ç”¨Javaè§„åˆ™å¼•æ“ŽAPI<br />       Javaè§„åˆ™å¼•æ“ŽAPIæŠŠå’Œè§„åˆ™å¼•æ“Žçš„äº¤äº’åˆ†ä¸ºä¸¤ç±»ï¼šç®¡ç?†æ´»åŠ¨å’Œè¿?è¡Œæ—¶æ´»åŠ¨ã€‚ç®¡ç?†æ´»åŠ¨åŒ…æ‹¬å®žä¾‹åŒ–è§„åˆ™å¼•æ“Žå’Œè£…è½½è§„åˆ™ã€‚è€Œè¿?è¡Œæ—¶æ´»åŠ¨åŒ…æ‹¬æ“?ä½œWorking Memoryå’Œæ‰§è¡Œè§„åˆ™ã€‚å¦‚æžœä½ åœ¨J2SEçŽ¯å¢ƒä¸­ä½¿ç”¨Javaè§„åˆ™å¼•æ“Žï¼Œä½ å?¯èƒ½éœ€è¦?åœ¨ä»£ç ?ä¸­æ‰§è¡Œä»¥ä¸Šæ‰€æœ‰çš„æ´»åŠ¨ã€‚ç›¸å??ï¼Œåœ¨J2EEçŽ¯å¢ƒä¸­ï¼ŒJavaè§„åˆ™å¼•æ“Žçš„ç®¡ç?†æ´»åŠ¨æ˜¯åº”ç”¨æœ?åŠ¡å™¨çš„ä¸€éƒ¨åˆ†ã€‚JSR 94çš„å?‚è€ƒå®žçŽ°åŒ…æ‹¬äº†ä¸€ä¸ªJCAè¿žæŽ¥å™¨ï¼Œç”¨äºŽé€šè¿‡JNDIèŽ·å¾—ä¸€ä¸ªRuleServiceProviderã€‚</p>
<p>  è®¾ç½®è§„åˆ™å¼•æ“Ž<br />       Javaè§„åˆ™å¼•æ“Žçš„ç®¡ç?†æ´»åŠ¨é˜¶æ®µå¼€å§‹äºŽæŸ¥æ‰¾ä¸€ä¸ªå?ˆé€‚çš„javax.rules.RuleServiceProviderå¯¹è±¡ï¼Œè¿™ä¸ªå¯¹è±¡æ˜¯åº”ç”¨ç¨‹åº?è®¿é—®è§„åˆ™å¼•æ“Žçš„å…¥å?£ã€‚åœ¨J2EEçŽ¯å¢ƒä¸­ï¼Œä½ å?¯èƒ½å?¯ä»¥é€šè¿‡JNDIèŽ·å¾—RuleServiceProviderã€‚å?¦åˆ™ï¼Œä½ å?¯ä»¥ä½¿ç”¨javax.rules.RuleServiceProviderManagerç±»ï¼š<br />           javax.rules.RuleServiceProviderManager class: <br />           String implName = &#8220;org.jcp.jsr94.ri.RuleServiceProvider&#8221;;<br />           Class.forName(implName);<br />           RuleServiceProvider serviceProvider = RuleServiceProviderManager.getRuleServiceProvider(implName);<br />       ä¸€æ—¦æ‹¥æœ‰äº†RuleServiceProviderå¯¹è±¡ï¼Œä½ å?¯ä»¥èŽ·å¾—ä¸€ä¸ªjavax.rules.admin.RuleAdministratorç±»ã€‚ä»ŽRuleAdministratorç±»ä¸­ï¼Œä½ å?¯ä»¥å¾—åˆ°ä¸€ä¸ªRuleExecutionSetProviderï¼Œä»Žç±»å??å?¯ä»¥çŸ¥é?“ï¼Œå®ƒç”¨äºŽåˆ›å»ºjavax.rules.RuleExecutionSetså¯¹è±¡ã€‚RuleExecutionSetåŸºæœ¬ä¸Šæ˜¯ä¸€ä¸ªè£…å…¥å†…å­˜çš„ï¼Œå‡†å¤‡å¥½æ‰§è¡Œçš„è§„åˆ™é›†å?ˆã€‚<br />       åŒ…javax.rules.adminåŒ…æ‹¬ä¸¤ä¸ªä¸?å?Œçš„RuleExecutionSetProviderç±»ã€‚RuleExecutionSetProviderç±»æœ¬èº«åŒ…æ‹¬äº†ä»ŽSerializableå¯¹è±¡åˆ›å»ºRuleExecutionSetsçš„æ–¹æ³•ï¼Œå› æ­¤åœ¨è§„åˆ™å¼•æ“Žä½?äºŽè¿œç¨‹æœ?åŠ¡å™¨çš„æƒ…å†µä¸‹ï¼Œä»?ç„¶å?¯ä»¥ä½¿ç”¨RuleExecutionSetProviderç±»ï¼Œæž„é€ å™¨çš„å?‚æ•°å?¯ä»¥é€šè¿‡RMIæ?¥ä¼ é€’ã€‚å?¦ä¸€ä¸ªç±»æ˜¯LocalRuleExecutionSetProviderï¼ŒåŒ…å?«äº†å…¶ä»–æ–¹æ³•ï¼Œç”¨äºŽä»Žé?žSerializableèµ„æº?ï¼ˆå¦‚java.io.Readerï¼?æœ¬åœ°æ–‡ä»¶ï¼‰åˆ›å»ºRuleExectionSetsã€‚å?‡è®¾æ‹¥æœ‰äº†ä¸€ä¸ªRuleServiceProviderå¯¹è±¡ï¼Œä½ å?¯ä»¥ä»Žæœ¬åœ°æ–‡ä»¶rules.xmlæ–‡ä»¶åˆ›å»ºä¸€ä¸ªRuleExectionSetå¯¹è±¡ã€‚å¦‚ä»¥ä¸‹çš„ä»£ç ?æ‰€ç¤ºï¼š<br />          RuleAdministrator admin = serviceProvider.getRuleAdministrator();<br />          HashMap properties = new HashMap();<br />          properties.put(&#8220;name&#8221;, &#8220;My Rules&#8221;);<br />          properties.put(&#8220;description&#8221;, &#8220;A trivial rulebase&#8221;);<br />          FileReader reader = new FileReader(&#8220;rules.xml&#8221;);<br />          RuleExecutionSet ruleSet = null;<br />          try {<br />               LocalRuleExecutionSetProvider lresp =<br />               admin.getLocalRuleExecutionSetProvider(properties);<br />               ruleSet = lresp.createRuleExecutionSet(reader, properties);<br />          } finally {<br />               reader.close();<br />          }<br />       æŽ¥ä¸‹æ?¥ï¼Œä½ å?¯ä»¥ä½¿ç”¨RuleAdministratoræ³¨å†ŒèŽ·å¾—çš„RuleExecutionSetï¼Œå¹¶ç»™å®ƒåˆ†é…?ä¸€ä¸ªå??ç§°ã€‚åœ¨è¿?è¡Œæ—¶ï¼Œä½ å?¯ä»¥ç”¨å?Œä¸€ä¸ªå??ç§°åˆ›å»ºä¸€ä¸ªRuleSessionï¼›è¯¥RuleSessionä½¿ç”¨äº†è¿™ä¸ªå‘½å??çš„RuleExecutionSetã€‚å?‚è§?ä¸‹é?¢çš„ä¾‹å­?ï¼š<br />admin.registerRuleExecutionSet(&#8220;rules&#8221;, ruleSet, properties);</p>
<p>  æ‰§è¡Œè§„åˆ™å¼•æ“Ž<br />       åœ¨è¿?è¡Œæ—¶é˜¶æ®µï¼Œä½ å?¯ä»¥å?‚è§?ä¸€ä¸ªRuleSessionå¯¹è±¡ã€‚RuleSessionå¯¹è±¡åŸºæœ¬ä¸Šæ˜¯ä¸€ä¸ªè£…è½½äº†ç‰¹å®šè§„åˆ™é›†å?ˆçš„è§„åˆ™å¼•æ“Žå®žä¾‹ã€‚ä½ ä»ŽRuleServiceProviderå¾—åˆ°ä¸€ä¸ªRuleRuntimeå¯¹è±¡ï¼ŒæŽ¥ä¸‹æ?¥ï¼Œä»Žjavax.rules.RuleRuntimeå¾—åˆ°RuleSessionå¯¹è±¡ã€‚<br />       RuleSessionåˆ†ä¸ºä¸¤ç±»ï¼šstatefulå’Œstatelessã€‚å®ƒä»¬å…·æœ‰ä¸?å?Œçš„åŠŸèƒ½ã€‚StatefulRuleSessionçš„Working Memoryèƒ½å¤Ÿåœ¨å¤šä¸ªæ–¹æ³•è°ƒç”¨æœŸé—´ä¿?å­˜çŠ¶æ€?ã€‚ä½ å?¯ä»¥åœ¨å¤šä¸ªæ–¹æ³•è°ƒç”¨æœŸé—´åœ¨Working Memoryä¸­åŠ å…¥å¤šä¸ªå¯¹è±¡ï¼Œç„¶å?Žæ‰§è¡Œå¼•æ“Žï¼ŒæŽ¥ä¸‹æ?¥è¿˜å?¯ä»¥åŠ å…¥æ›´å¤šçš„å¯¹è±¡å¹¶å†?æ¬¡æ‰§è¡Œå¼•æ“Žã€‚ç›¸å??ï¼ŒStatelessRuleSessionç±»æ˜¯ä¸?ä¿?å­˜çŠ¶æ€?çš„ï¼Œä¸ºäº†æ‰§è¡Œå®ƒçš„executeRulesæ–¹æ³•ï¼Œä½ å¿…é¡»ä¸ºWorking Memoryæ??ä¾›æ‰€æœ‰çš„åˆ?å§‹æ•°æ?®ï¼Œæ‰§è¡Œè§„åˆ™å¼•æ“Žï¼Œå¾—åˆ°ä¸€ä¸ªå†…å®¹åˆ—è¡¨ä½œä¸ºè¿”å›žå€¼ã€‚<br />       ä¸‹é?¢çš„ä¾‹å­?ä¸­ï¼Œæˆ‘ä»¬åˆ›å»ºä¸€ä¸ªStatefulRuleSessionå®žä¾‹ï¼Œæ·»åŠ ä¸¤ä¸ªå¯¹è±¡ï¼ˆä¸€ä¸ªIntegerå’Œä¸€ä¸ªStringï¼‰åˆ°Working Memoryï¼Œæ‰§è¡Œè§„åˆ™ï¼Œç„¶å?Žå¾—åˆ°Working Memoryä¸­æ‰€æœ‰çš„å†…å®¹ï¼Œä½œä¸ºjava.util.Listå¯¹è±¡è¿”å›žã€‚æœ€å?Žï¼Œæˆ‘ä»¬è°ƒç”¨releaseæ–¹æ³•æ¸…ç?†RuleSessionï¼š<br />         RuleRuntime runtime = rsp.getRuleRuntime();<br />         StatefulRuleSession session = (StatefulRuleSession)<br />         runtime.createRuleSession(&#8220;rules&#8221;, properties,<br />         RuleRuntime.STATEFUL_SESSION_TYPE);<br />         session.addObject(new Integer(1));<br />         session.addObject(&#8220;A string&#8221;);<br />         session.executeRules();<br />         List results = session.getObjects();<br />         session.release();</p>
<p>é›†æˆ?JSR 94äº§å“?å®žçŽ°<br />       æ”¯æŒ?JSR 94è§„èŒƒçš„äº§å“?å®žçŽ°æ—¢æœ‰æ”¶è´¹çš„å•†ä¸šäº§å“?ï¼Œä¹Ÿæœ‰å…?è´¹çš„å¼€æº?é¡¹ç›®ã€‚ç›®å‰?æœ€ä¸ºæˆ?ç†Ÿï¼ŒåŠŸèƒ½æœ€å¼ºå¤§çš„å•†ä¸šäº§å“?æ˜¯ILOGå…¬å?¸çš„JRulesï¼Œè¯¥å…¬å?¸ä¹Ÿæ˜¯JSR 94è§„èŒƒçš„ç§¯æž?æŽ¨åŠ¨è€…ä¹‹ä¸€ã€‚æ”¯æŒ?JSR 94è§„èŒƒçš„å¼€æº?é¡¹ç›®ç›®å‰?å¾ˆå°‘ï¼Œå?ªæœ‰Droolså’ŒJLisaé¡¹ç›®ã€‚å€¼å¾—æ³¨æ„?çš„æ˜¯ï¼ŒJessä¸?æ˜¯å¼€æº?é¡¹ç›®ï¼Œå®ƒå?¯ä»¥å…?è´¹ç”¨äºŽå­¦æœ¯ç ”ç©¶ï¼Œä½†ç”¨äºŽå•†ä¸šç”¨é€”åˆ™è¦?æ”¶è´¹ã€‚</p>
<p>  JSR 94çš„äº§å“?å®žçŽ°</p>
<p>Javaè§„åˆ™å¼•æ“Žå•†ä¸šäº§å“?æœ‰ï¼š<br />          l. ILOGå…¬å?¸çš„JRules<br />          2. BlazeSoftå…¬å?¸çš„Blaze<br />          3. Rules4J<br />          4. Java Expert System Shell ï¼ˆJESSï¼‰</p>
<p>å¼€æº?é¡¹ç›®çš„å®žçŽ°åŒ…æ‹¬ï¼š<br />         l. Droolsé¡¹ç›®<br />         2. JLisaé¡¹ç›®<br />         3. OFBiz Rule Engineï¼ˆä¸?æ”¯æŒ?JSR 94ï¼‰<br />         4. Mandaraxï¼ˆç›®å‰?ä¸?æ”¯æŒ?JSR 94ï¼‰</p>
<p>  ä½¿ç”¨Springé›†æˆ?<br />       é›†æˆ?Javaè§„åˆ™å¼•æ“Žçš„ç›®æ ‡æ˜¯ï¼Œä½¿ç”¨æ ‡å‡†çš„Javaè§„åˆ™å¼•æ“ŽAPIå°?è£…ä¸?å?Œçš„å®žçŽ°ï¼Œå±?è”½ä¸?å?Œçš„äº§å“?å®žçŽ°ç»†èŠ‚ã€‚è¿™æ ·å?šçš„å¥½å¤„æ˜¯ï¼Œå½“æ›¿æ?¢ä¸?å?Œçš„è§„åˆ™å¼•æ“Žäº§å“?æ—¶ï¼Œå?¯ä»¥ä¸?å¿…ä¿®æ”¹åº”ç”¨ä»£ç ?ã€‚<br />    å°?è£…JSR94å®žçŽ°<br />       RuleEngineFacadeç±»å°?è£…Javaè§„åˆ™å¼•æ“Žï¼Œä½¿ç”¨ruleServiceProviderUrlå’ŒruleServiceProviderImplä¸¤ä¸ªå?‚æ•°ï¼Œå±?è”½äº†ä¸?å?Œäº§å“?çš„é…?ç½®ã€‚ä»£ç ?å¦‚ä¸‹ï¼š<br />       public class RuleEngineFacade {<br />                private RuleAdministrator ruleAdministrator;<br />                private RuleServiceProvider ruleServiceProvider;<br />                private LocalRuleExecutionSetProvider ruleSetProvider;<br />                private RuleRuntime ruleRuntime;<br />                // configuration parameters<br />                private String ruleServiceProviderUrl;<br />                private Class ruleServiceProviderImpl;</p>
<p>          public void setRuleServiceProviderUrl(String url) {<br />                this.ruleServiceProviderUrl = url;<br />          }<br />           public void setRuleServiceProviderImpl(Class impl) {<br />                this.ruleServiceProviderImpl = impl;<br />          }<br />           public void init() throws Exception {<br />                RuleServiceProviderManager.registerRuleServiceProvider(<br />                ruleServiceProviderUrl, ruleServiceProviderImpl);<br />                ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider(ruleServiceProviderUrl);<br />                ruleAdministrator = ruleServiceProvider.getRuleAdministrator();<br />                ruleSetProvider = ruleAdministrator.getLocalRuleExecutionSetProvider(null);<br />          }<br />          public void addRuleExecutionSet(String bindUri,InputStream resourceAsStream)<br />                    throws Exception {<br />                Reader ruleReader = new InputStreamReader(resourceAsStream);<br />                RuleExecutionSet ruleExecutionSet =<br />                ruleSetProvider.createRuleExecutionSet(ruleReader, null);<br />                ruleAdministrator.registerRuleExecutionSet(bindUri,ruleExecutionSet,null);<br />         }<br />         public StatelessRuleSession getStatelessRuleSession(String key)<br />                   throws Exception {<br />                ruleRuntime = ruleServiceProvider.getRuleRuntime();<br />                return (StatelessRuleSession) ruleRuntime.createRuleSession(key, null, RuleRuntime.STATELESS_SESSION_TYPE);<br />         }<br />         public StatefulRuleSession getStatefulRuleSession(String key)<br />                   throws Exception {<br />                ruleRuntime = ruleServiceProvider.getRuleRuntime();<br />                return (StatefulRuleSession) ruleRuntime.createRuleSession(<br />                key, null, RuleRuntime.STATEFUL_SESSION_TYPE);<br />         }<br />         public RuleServiceProvider getRuleServiceProvider() {<br />                return this.ruleServiceProvider;<br />         }<br />    }</p>
<p>    å°?è£…è§„åˆ™<br />        Ruleç±»å°?è£…äº†å…·ä½“çš„ä¸šåŠ¡è§„åˆ™ï¼Œå®ƒçš„è¾“å…¥å?‚æ•°ruleNameæ˜¯å®šä¹‰è§„åˆ™çš„é…?ç½®æ–‡ä»¶å??ï¼Œå¹¶ä¾?èµ–äºŽRuleEngineFacadeç»„ä»¶ã€‚ä»£ç ?å¦‚ä¸‹ï¼š<br />    public class Rule {<br />         private String ruleName;<br />         private RuleEngineFacade engineFacade;</p>
<p>         public void init() throws Exception {<br />              InputStream is = Rule.class.getResourceAsStream(ruleName);<br />              engineFacade.addRuleExecutionSet(ruleName, is);<br />              is.close();<br />        }</p>
<p>        public void setRuleName(String name) {<br />             this.ruleName = name;<br />        }</p>
<p>        public void setEngineFacade(RuleEngineFacade engine) {<br />            this.engineFacade = engine;<br />        }</p>
<p>        public StatelessRuleSession getStatelessRuleSession()<br />                     throws Exception {<br />            return engineFacade.getStatelessRuleSession(ruleName);<br />        }</p>
<p>        public StatefulRuleSession getStatefuleRuleSession()<br />                     throws Exception {<br />            return engineFacade.getStatefulRuleSession(ruleName);<br />        }<br />    }</p>
<p>    ç»„è£…è§„åˆ™ç»„ä»¶<br />       ç»„è£…è§„åˆ™çš„é…?ç½®æ–‡ä»¶å¦‚ä¸‹ï¼š</p>
<p>           http://drools.org/</p>
<p>           org.drools.jsr94.rules.RuleServiceProviderImpl</p>
<p>          /test/fibonacci.drl</p>
<p>    æµ‹è¯•ç”¨ä¾‹<br />       æœ€å?Žï¼Œæˆ‘ä»¬ç¼–å†™æµ‹è¯•ç”¨ä¾‹ï¼Œä»£ç ?å¦‚ä¸‹ï¼š<br />public class JSRTest extends TestCase {<br />      ApplicationContext ctx = null;<br />      protected void setUp() throws Exception {<br />           super.setUp();<br />           ctx = new FileSystemXmlApplicationContext(&#8220;testrule.xml&#8221;);<br />      }<br />      public void testGetRuleSession() throws Exception {<br />           Rule rule = (Rule)ctx.getBean(&#8220;fibonacci&#8221;);<br />           assertNotNull(rule.getStatefuleRuleSession());<br />           assertNotNull(rule.getStatelessRuleSession());<br />      }<br />      public void testStatelessRule() throws Exception {<br />           Rule rule = (Rule)ctx.getBean(&#8220;fibonacci&#8221;);<br />           Fibonacci fibonacci = new Fibonacci(50);<br />           List list = new ArrayList();<br />           list.add(fibonacci);<br />           StatelessRuleSession session = rule.getStatelessRuleSession();<br />           session.executeRules(list);<br />           session.release();<br />      }<br />      public void testStatefulRule() throws Exception {<br />            Rule rule = (Rule)ctx.getBean(&#8220;fibonacci&#8221;);<br />            Fibonacci fibonacci = new Fibonacci(50);<br />            StatefulRuleSession session = rule.getStatefuleRuleSession();<br />            session.addObject(fibonacci);<br />            session.executeRules();<br />            session.release();<br />       }<br />}</p>
<p>       è¿?è¡Œæµ‹è¯•ç”¨ä¾‹ï¼Œå‡ºçŽ°ç»¿æ?¡ï¼Œæµ‹è¯•é€šè¿‡ã€‚</p>
<p>è§„åˆ™å®šä¹‰è¯­è¨€ä¹‹é—´çš„å?˜æ?¢<br />       å› ä¸ºJSR 94è§„èŒƒå¹¶æ²¡æœ‰å¼ºåˆ¶ç»Ÿä¸€è§„åˆ™å®šä¹‰çš„è¯­æ³•ï¼Œå› æ­¤ï¼Œå½“éœ€è¦?å°†åº”ç”¨ç§»æ¤?åˆ°å…¶ä»–çš„Javaè§„åˆ™å¼•æ“Žå®žçŽ°æ—¶ï¼Œå?¯èƒ½éœ€è¦?å?˜æ?¢è§„åˆ™å®šä¹‰ï¼Œå¦‚å°†Droolsç§?æœ‰çš„DRLè§„åˆ™è¯­è¨€è½¬æ?¢æˆ?æ ‡å‡†çš„ruleMLï¼ŒJessè§„åˆ™è¯­è¨€è½¬æ?¢æˆ?ruleMLç­‰ã€‚è¿™ä¸ªå·¥ä½œä¸€èˆ¬ç”±XSLTè½¬æ?¢å™¨æ?¥å®Œæˆ?ã€‚</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yanwt.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yanwt.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yanwt.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yanwt.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yanwt.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yanwt.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yanwt.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yanwt.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yanwt.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yanwt.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yanwt.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yanwt.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yanwt.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yanwt.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yanwt.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yanwt.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=13&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yanwt.wordpress.com/2005/11/10/%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e7%ae%80%e4%bb%8b/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed49648f2f6bcd6605585706d2471cf8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yanwt</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://yanwt.wordpress.com/2005/11/10/11/</link>
		<comments>http://yanwt.wordpress.com/2005/11/10/11/#comments</comments>
		<pubDate>Thu, 10 Nov 2005 03:29:14 +0000</pubDate>
		<dc:creator>yanwt</dc:creator>
				<category><![CDATA[æœªåˆ†é¡žÂ·Uncategorized]]></category>

		<guid isPermaLink="false">http://yanwt.wordpress.com/2005/11/10/11/</guid>
		<description><![CDATA[import java.io.*; import javax.sound.sampled.*; import java.net.*; /** * Title:Â Â Â Â Â Â Â  VoiceChat * Description:Â  è¾“å‡ºéŸ³é¢‘ï¼ˆæ”¾éŸ³ç¨‹åº?ï¼‰ * Copyright:Â Â Â  Copyright (c) 2001 * Company: * @authorÂ Â Â Â Â Â  * @version 1.0 */ class Playback implements Runnable { Â Â Â Â Â Â  final int bufSize = 16384; Â Â Â Â Â Â  SourceDataLine line; Â Â Â Â Â Â  Thread thread; Â Â Â Â Â Â  Socket s; Â Â Â Â Â Â  Playback(Socket s){//æž„é€ å™¨ å?–å¾—socketä»¥èŽ·å¾—ç½‘ç»œè¾“å…¥æµ? Â Â Â Â Â Â Â Â  this.s=s; Â Â Â Â Â Â  } Â Â Â Â Â Â  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=11&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>import java.io.*; <br />import javax.sound.sampled.*; <br />import java.net.*; </p>
<p>/** <br />* Title:Â Â Â Â Â Â Â  VoiceChat <br />* Description:Â  è¾“å‡ºéŸ³é¢‘ï¼ˆæ”¾éŸ³ç¨‹åº?ï¼‰ <br />* Copyright:Â Â Â  Copyright (c) 2001 <br />* Company: <br />* @authorÂ Â Â Â Â Â   <br />* @version 1.0 <br />*/ </p>
<p>class Playback implements Runnable { </p>
<p>Â Â Â Â Â Â  final int bufSize = 16384; <br />Â Â Â Â Â Â  SourceDataLine line; <br />Â Â Â Â Â Â  Thread thread; <br />Â Â Â Â Â Â  Socket s; </p>
<p>Â Â Â Â Â Â  Playback(Socket s){//æž„é€ å™¨ å?–å¾—socketä»¥èŽ·å¾—ç½‘ç»œè¾“å…¥æµ? <br />Â Â Â Â Â Â Â Â  this.s=s; <br />Â Â Â Â Â Â  } <br />Â Â Â Â Â Â  public void start() { </p>
<p>Â Â Â Â Â Â Â Â Â Â  thread = new Thread(this); <br />Â Â Â Â Â Â Â Â Â Â  thread.setName(&#8220;Playback&#8221;); <br />Â Â Â Â Â Â Â Â Â Â  thread.start(); <br />Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â  public void stop() { <br />Â Â Â Â Â Â Â Â Â Â  thread = null; <br />Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â  public void run() { </p>
<p>Â Â Â Â Â Â Â Â Â Â  AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndianï¼‰ <br />Â Â Â Â Â Â Â Â Â Â  BufferedInputStream playbackInputStream; </p>
<p>Â Â Â Â Â Â Â Â Â Â  try { <br />Â Â Â Â Â Â Â Â Â Â Â Â  playbackInputStream=new BufferedInputStream(new AudioInputStream(s.getInputStream(),format,2147483647));//å°?è£…æˆ?éŸ³é¢‘è¾“å‡ºæµ?ï¼Œå¦‚æžœç½‘ç»œæµ?æ˜¯ç»?è¿‡åŽ‹ç¼©çš„éœ€åœ¨æ­¤åŠ å¥—è§£åŽ‹æµ? <br />Â Â Â Â Â Â Â Â Â Â  } <br />Â Â Â Â Â Â Â Â Â Â  catch (IOException ex) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  return; <br />Â Â Â Â Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â Â Â Â Â  DataLine.Info info = new DataLine.Info(SourceDataLine.class,format); </p>
<p>Â Â Â Â Â Â Â Â Â Â  try { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  line = (SourceDataLine) AudioSystem.getLine(info); <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  line.open(format, bufSize); <br />Â Â Â Â Â Â Â Â Â Â  } catch (LineUnavailableException ex) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  return; <br />Â Â Â Â Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â Â Â Â Â  byte[] data = new byte[1024];//æ­¤å¤„æ•°ç»„çš„å¤§å°?è·Ÿå®žæ—¶æ€§å…³ç³»ä¸?å¤§ï¼Œå?¯æ ¹æ?®æƒ…å†µè¿›è¡Œè°ƒæ•´ <br />Â Â Â Â Â Â Â Â Â Â  int numBytesRead = 0; <br />Â Â Â Â Â Â Â Â Â Â  line.start(); </p>
<p>Â Â Â Â Â Â Â Â Â Â  while (thread != null) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â  try{ <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  numBytesRead = playbackInputStream.read(data); <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  line.write(data, 0,numBytesRead); <br />Â Â Â Â Â Â Â Â Â Â Â Â Â  } catch (IOException e) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  break; <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  } <br />Â Â Â Â Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â Â Â Â Â  if (thread != null) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  line.drain(); <br />Â Â Â Â Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â Â Â Â Â  line.stop(); <br />Â Â Â Â Â Â Â Â Â Â  line.close(); <br />Â Â Â Â Â Â Â Â Â Â  line = null; <br />Â Â Â Â Â Â  } <br />} </p>
<p>import java.io.*; <br />import javax.sound.sampled.*; <br />import java.net.*; </p>
<p>/** <br />* Title:Â Â Â Â Â Â Â  VoiceChat <br />* Description:Â  éŸ³é¢‘æ?•æ?‰ï¼ˆå½•éŸ³ç¨‹åº?ï¼‰ <br />* Copyright:Â Â Â  Copyright (c) 2001 <br />* Company: <br />* @authorÂ Â Â Â Â Â  <br />* @version 1.0 <br />*/ </p>
<p>class Capture implements Runnable { </p>
<p>Â Â Â Â Â Â  TargetDataLine line; <br />Â Â Â Â Â Â  Thread thread; <br />Â Â Â Â Â Â  Socket s; <br />Â Â Â Â Â Â  BufferedOutputStream captrueOutputStream; </p>
<p>Â Â Â Â Â Â  Capture(Socket s){//æž„é€ å™¨ å?–å¾—socketä»¥èŽ·å¾—ç½‘ç»œè¾“å‡ºæµ? <br />Â Â Â Â Â Â Â Â  this.s=s; <br />Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â  public void start() { </p>
<p>Â Â Â Â Â Â Â Â Â Â  thread = new Thread(this); <br />Â Â Â Â Â Â Â Â Â Â  thread.setName(&#8220;Capture&#8221;); <br />Â Â Â Â Â Â Â Â Â Â  thread.start(); <br />Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â  public void stop() { <br />Â Â Â Â Â Â Â Â Â Â  thread = null; <br />Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â  public void run() { </p>
<p>Â Â Â Â Â Â Â Â Â Â  try { <br />Â Â Â Â Â Â Â Â Â Â Â Â  captrueOutputStream=new BufferedOutputStream(s.getOutputStream());//å»ºç«‹è¾“å‡ºæµ? æ­¤å¤„å?¯ä»¥åŠ å¥—åŽ‹ç¼©æµ?ç”¨æ?¥åŽ‹ç¼©æ•°æ?® <br />Â Â Â Â Â Â Â Â Â Â  } <br />Â Â Â Â Â Â Â Â Â Â  catch (IOException ex) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  return; <br />Â Â Â Â Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â Â Â Â Â  AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndianï¼‰ <br />Â Â Â Â Â Â Â Â Â Â  DataLine.Info info = new DataLine.Info(TargetDataLine.class,format); </p>
<p>Â Â Â Â Â Â Â Â Â Â  try { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  line = (TargetDataLine) AudioSystem.getLine(info); <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  line.open(format, line.getBufferSize()); <br />Â Â Â Â Â Â Â Â Â Â  } catch (Exception ex) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  return; <br />Â Â Â Â Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â Â Â Â Â  byte[] data = new byte[1024];//æ­¤å¤„çš„1024å?¯ä»¥æƒ…å†µè¿›è¡Œè°ƒæ•´ï¼Œåº”è·Ÿä¸‹é?¢çš„1024åº”ä¿?æŒ?ä¸€è‡´ <br />Â Â Â Â Â Â Â Â Â Â  int numBytesRead=0; <br />Â Â Â Â Â Â Â Â Â Â  line.start(); </p>
<p>Â Â Â Â Â Â Â Â Â Â  while (thread != null) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  numBytesRead = line.read(data, 0,1024);//å?–æ•°æ?®ï¼ˆ1024ï¼‰çš„å¤§å°?ç›´æŽ¥å…³ç³»åˆ°ä¼ è¾“çš„é€Ÿåº¦ï¼Œä¸€èˆ¬è¶Šå°?è¶Šå¿«ï¼Œ <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  try { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  captrueOutputStream.write(data, 0, numBytesRead);//å†™å…¥ç½‘ç»œæµ? <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  } <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  catch (Exception ex) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  break; <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  } <br />Â Â Â Â Â Â Â Â Â Â  } </p>
<p>Â Â Â Â Â Â Â Â Â Â  line.stop(); <br />Â Â Â Â Â Â Â Â Â Â  line.close(); <br />Â Â Â Â Â Â Â Â Â Â  line = null; </p>
<p>Â Â Â Â Â Â Â Â Â Â  try { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  captrueOutputStream.flush(); <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  captrueOutputStream.close(); <br />Â Â Â Â Â Â Â Â Â Â  } catch (IOException ex) { <br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  ex.printStackTrace(); <br />Â Â Â Â Â Â Â Â Â Â  } <br />Â Â Â Â Â Â  } <br />} </p>
<p>technorati tags: <a rel="tag" href="http://technorati.com/tag/java">java</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yanwt.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yanwt.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yanwt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yanwt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yanwt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yanwt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yanwt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yanwt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yanwt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yanwt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yanwt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yanwt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yanwt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yanwt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yanwt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yanwt.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=11&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yanwt.wordpress.com/2005/11/10/11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed49648f2f6bcd6605585706d2471cf8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yanwt</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://yanwt.wordpress.com/2005/11/10/10/</link>
		<comments>http://yanwt.wordpress.com/2005/11/10/10/#comments</comments>
		<pubDate>Thu, 10 Nov 2005 03:27:20 +0000</pubDate>
		<dc:creator>yanwt</dc:creator>
				<category><![CDATA[æœªåˆ†é¡žÂ·Uncategorized]]></category>

		<guid isPermaLink="false">http://yanwt.wordpress.com/2005/11/10/10/</guid>
		<description><![CDATA[package com.borland.samples.welcome; /**Â * Title:Â * Description:Â * Copyright:Â Â Â  Copyright (c) 2001Â * Company:Â * @authorÂ * @version 1.0Â */import java.awt.*;import java.awt.image.*;import com.sun.image.codec.jpeg.*; class ImageCanvas extends Canvas{Â  private Image image;Â  private Dimension prefSize; Â  public ImageCanvas(Image image){Â Â Â  this.image = image;Â Â Â  calculatePreferredSize();Â  } Â  public void setImage(Image image){Â Â Â  this.image = image;Â Â Â  calculatePreferredSize();Â Â Â  repaint();Â  } Â  private void calculatePreferredSize(){Â Â Â  prefSize = new Dimension(image.getWidth(this),image.getHeight(this));Â Â Â  System.out.println(image.getWidth(this));Â Â Â  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=10&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>package com.borland.samples.welcome;</p>
<p>/**<br />Â * Title:<br />Â * Description:<br />Â * Copyright:Â Â Â  Copyright (c) 2001<br />Â * Company:<br />Â * @author<br />Â * @version 1.0<br />Â */<br />import java.awt.*;<br />import java.awt.image.*;<br />import com.sun.image.codec.jpeg.*;</p>
<p>class ImageCanvas extends Canvas{<br />Â  private Image image;<br />Â  private Dimension prefSize;</p>
<p>Â  public ImageCanvas(Image image){<br />Â Â Â  this.image = image;<br />Â Â Â  calculatePreferredSize();<br />Â  }</p>
<p>Â  public void setImage(Image image){<br />Â Â Â  this.image = image;<br />Â Â Â  calculatePreferredSize();<br />Â Â Â  repaint();<br />Â  }</p>
<p>Â  private void calculatePreferredSize(){<br />Â Â Â  prefSize = new Dimension(image.getWidth(this),image.getHeight(this));<br />Â Â Â  System.out.println(image.getWidth(this));<br />Â Â Â  setSize(prefSize);<br />Â  }<br />Â  public Dimension getPreferredSize() {<br />Â Â Â Â  return prefSize;<br />Â  }<br />Â  public Dimension getMinimumSize() {<br />Â Â Â Â  return prefSize;<br />Â  }<br />Â  public void update(Graphics g){<br />Â Â Â Â  paint(g);<br />Â  }<br />Â  public void paint(Graphics g){<br />Â Â Â Â  g.drawImage(image,0,0,null);<br />Â  }<br />}</p>
<p>class ImageUtils{<br />Â  public static Image getScreenImage(){<br />Â Â Â  Robot robot;<br />Â Â Â  try {<br />Â Â Â Â Â  robot = new Robot();<br />Â Â Â  }catch(Exception e) {<br />Â Â Â Â Â  throw new RuntimeException(&#8220;unable to construct Robot&#8221;);<br />Â Â Â  }<br />Â Â Â  Dimension screenDims =Toolkit.getDefaultToolkit().getScreenSize();<br />Â Â Â  Image screen =robot.createScreenCapture(new Rectangle(450,350,screenDims.width,screenDims.height)).getScaledInstance(400,300,Image.SCALE_SMOOTH);<br />Â Â Â  MediaTracker tracker =new MediaTracker(new Label());<br />Â Â Â  tracker.addImage(screen,1);<br />Â Â Â  try {<br />Â Â Â Â Â  tracker.waitForID(0);<br />Â Â Â  }catch(InterruptedException e) { /** &#8230; */ }<br />Â Â Â  return screen;<br />Â  }<br />}</p>
<p>public class ScreenCapture extends Frame{<br />Â  private ImageCanvas canvas =new ImageCanvas(ImageUtils.getScreenImage());<br />Â  public ScreenCapture(){<br />Â Â Â  add(canvas);<br />Â Â Â  setSize(400,300);<br />Â Â Â  setVisible(true);<br />Â Â Â  Thread imageThread =new UpdateThread();<br />Â Â Â  imageThread.setDaemon(true);<br />Â Â Â  imageThread.start();<br />}<br />Â  class UpdateThread extends Thread{<br />Â Â  public void run(){<br />Â Â Â Â Â  while(true){<br />Â Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â  Thread.currentThread().sleep(1000);<br />Â Â Â Â Â Â Â  }<br />Â Â Â Â Â Â Â  catch (Exception ex) {</p>
<p>Â Â Â Â Â Â Â  }<br />Â Â Â Â Â Â Â  canvas.setImage(ImageUtils.getScreenImage());<br />Â Â Â Â Â Â Â  validate();<br />Â Â Â Â  }<br />Â Â Â  }<br />Â  }</p>
<p>Â  public static void main(String[] args){<br />Â Â  new ScreenCapture();</p>
<p>Â  }<br />}</p>
<p></p>
<p>technorati tags: <a rel="tag" href="http://technorati.com/tag/java">java</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yanwt.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yanwt.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yanwt.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yanwt.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yanwt.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yanwt.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yanwt.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yanwt.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yanwt.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yanwt.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yanwt.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yanwt.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yanwt.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yanwt.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yanwt.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yanwt.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=10&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yanwt.wordpress.com/2005/11/10/10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed49648f2f6bcd6605585706d2471cf8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yanwt</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://yanwt.wordpress.com/2005/11/10/9/</link>
		<comments>http://yanwt.wordpress.com/2005/11/10/9/#comments</comments>
		<pubDate>Thu, 10 Nov 2005 03:22:15 +0000</pubDate>
		<dc:creator>yanwt</dc:creator>
				<category><![CDATA[æœªåˆ†é¡žÂ·Uncategorized]]></category>

		<guid isPermaLink="false">http://yanwt.wordpress.com/2005/11/10//</guid>
		<description><![CDATA[Java çš„å??å°„æœºåˆ¶æ˜¯ä½¿å…¶å…·æœ‰åŠ¨æ€?ç‰¹æ€§çš„é?žå¸¸å…³é”®çš„ä¸€ç§?æœºåˆ¶ï¼Œä¹Ÿæ˜¯åœ¨JavaBean ä¸­å¹¿æ³›åº”ç”¨çš„ä¸€ç§?ç‰¹æ€§ã€‚è¿?ç”¨JavaBean çš„æœ€å¸¸è§?çš„é—®é¢˜æ˜¯ï¼šæ ¹æ?®æŒ‡å®šçš„ç±»å??ï¼Œç±»å­—æ®µå??å’Œæ‰€å¯¹åº”çš„æ•°æ?®ï¼Œå¾—åˆ°è¯¥ç±»çš„å®žä¾‹ï¼Œä¸‹é?¢çš„ä¸€ä¸ªä¾‹å­?æ¼”ç¤ºäº†è¿™ä¸€å®žçŽ°ã€‚-&#124;Base.java //æŠ½è±¡åŸºç±»Â &#124;Son1.java //åŸºç±»æ‰©å±•1Â &#124;Son2.java //åŸºç±»æ‰©å±•2Â &#124;Util.java /**Â * @author metaphyÂ * create 2005-4-14 9:06:56Â * è¯´æ˜Žï¼šÂ */ï¼ˆ1ï¼‰Base.java æŠ½è±¡åŸºç±»å?ªæ˜¯ä¸€ä¸ªå®šä¹‰public abstract class Base { }ï¼ˆ2ï¼‰Son1.java /Son2.java æ˜¯å·²ç»?å®žçŽ°çš„JavaBeanpublic class Son1 extends Base{Â Â Â  private int id ;Â Â Â  private String name ;Â Â Â  Â Â Â  public int getId() {Â Â Â Â Â Â Â  return id;Â Â Â  }Â Â Â  public void setId(int id) {Â Â Â Â Â Â Â  this.id = id;Â Â Â  }Â Â Â  public String getName() {Â Â Â Â Â Â Â  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=9&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Java çš„å??å°„æœºåˆ¶æ˜¯ä½¿å…¶å…·æœ‰åŠ¨æ€?ç‰¹æ€§çš„é?žå¸¸å…³é”®çš„ä¸€ç§?æœºåˆ¶ï¼Œä¹Ÿæ˜¯åœ¨JavaBean ä¸­å¹¿æ³›åº”ç”¨çš„ä¸€ç§?ç‰¹æ€§ã€‚<br />è¿?ç”¨JavaBean çš„æœ€å¸¸è§?çš„é—®é¢˜æ˜¯ï¼šæ ¹æ?®æŒ‡å®šçš„ç±»å??ï¼Œç±»å­—æ®µå??å’Œæ‰€å¯¹åº”çš„æ•°æ?®ï¼Œå¾—åˆ°è¯¥ç±»çš„å®žä¾‹ï¼Œä¸‹é?¢çš„ä¸€ä¸ªä¾‹å­?æ¼”ç¤ºäº†è¿™ä¸€å®žçŽ°ã€‚<br />-|Base.java //æŠ½è±¡åŸºç±»<br />Â |Son1.java //åŸºç±»æ‰©å±•1<br />Â |Son2.java //åŸºç±»æ‰©å±•2<br />Â |Util.java </p>
<p>/**<br />Â * @author metaphy<br />Â * create 2005-4-14 9:06:56<br />Â * è¯´æ˜Žï¼š<br />Â */<br />ï¼ˆ1ï¼‰Base.java æŠ½è±¡åŸºç±»å?ªæ˜¯ä¸€ä¸ªå®šä¹‰<br />public abstract class Base {</p>
<p>}<br />ï¼ˆ2ï¼‰Son1.java /Son2.java æ˜¯å·²ç»?å®žçŽ°çš„JavaBean<br />public class Son1 extends Base{<br />Â Â Â  private int id ;<br />Â Â Â  private String name ;<br />Â Â Â  <br />Â Â Â  public int getId() {<br />Â Â Â Â Â Â Â  return id;<br />Â Â Â  }<br />Â Â Â  public void setId(int id) {<br />Â Â Â Â Â Â Â  this.id = id;<br />Â Â Â  }<br />Â Â Â  public String getName() {<br />Â Â Â Â Â Â Â  return name;<br />Â Â Â  }<br />Â Â Â  public void setName(String name) {<br />Â Â Â Â Â Â Â  this.name = name;<br />Â Â Â  }<br />Â Â Â  <br />Â Â Â  public void son1Method(String s){<br />Â Â Â Â Â Â Â  System.out.println(s) ; <br />Â Â Â  }<br />}<br />ï¼ˆ3ï¼‰<br />public class Son2 extends Base{<br />Â Â Â  private int id;<br />Â Â Â  private double salary;<br />Â Â Â  <br />Â Â Â  public int getId() {<br />Â Â Â Â Â Â Â  return id;<br />Â Â Â  }<br />Â Â Â  public void setId(int id) {<br />Â Â Â Â Â Â Â  this.id = id;<br />Â Â Â  }<br />Â Â Â  public double getSalary() {<br />Â Â Â Â Â Â Â  return salary;<br />Â Â Â  }<br />Â Â Â  public void setSalary(double salary) {<br />Â Â Â Â Â Â Â  this.salary = salary;<br />Â Â Â  }<br />}<br />ï¼ˆ4ï¼‰Util.java æ¼”ç¤ºäº†å¦‚ä½•æ ¹æ?®æŒ‡å®šçš„ç±»å??ï¼Œç±»å­—æ®µå??å’Œæ‰€å¯¹åº”çš„æ•°æ?®ï¼Œå¾—åˆ°ä¸€ä¸ªç±»çš„å®žä¾‹<br />import java.lang.reflect.Method;</p>
<p>public class Util {<br />Â Â Â  //æ­¤æ–¹æ³•çš„æœ€å¤§å¥½å¤„æ˜¯æ²¡æœ‰ç±»å??Son1,Son2 å?¯ä»¥é€šè¿‡å?‚æ•°æ?¥æŒ‡å®šï¼Œç¨‹åº?é‡Œé?¢æ ¹æœ¬ä¸?ç”¨å‡ºçŽ°<br />Â Â Â  public static Base convertStr2ServiceBean(String beanName,String fieldSetter,String paraValue){<br />Â Â Â Â Â Â Â  Base base = null ; <br />Â Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(beanName) ;<br />Â Â Â Â Â Â Â Â Â Â Â  base = (Base)cls.newInstance() ;<br />Â Â Â Â Â Â Â Â Â Â Â  Class[] paraTypes = new Class[]{String.class };<br />Â Â Â Â Â Â Â Â Â Â Â  Method method = cls.getMethod(fieldSetter, paraTypes) ;<br />Â Â Â Â Â Â Â Â Â Â Â  String[] paraValues = new String[]{paraValue} ;<br />Â Â Â Â Â Â Â Â Â Â Â  method.invoke(base, paraValues) ;<br />Â Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â Â  }<br />Â Â Â Â Â Â Â  return base ;<br />Â Â Â  }<br />Â Â Â  <br />Â Â Â  <br />Â Â Â  public static void main(String[] args){<br />Â Â Â Â Â Â Â  Son1 son1 =(Son1) Util.convertStr2ServiceBean(&#8220;trying.reflect.Son1&#8243;,&#8221;setName&#8221;,&#8221;wang da sha&#8221;);<br />Â Â Â Â Â Â Â  System.out.println(&#8220;son1.getName() :&#8221;+son1.getName())Â  ;<br />Â Â Â  }<br />}</p>
<p>//è°ƒç”¨ç»“æžœï¼š<br />//son1.getName() :wang da sha</p>
<p>è°¢è°¢ï¼?å¸Œæœ›èƒ½ç»™å¤§å®¶ä¸€ç‚¹å?¯å?‘ï¼?</p>
<p>ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?ï¼?</p>
<p>é™„ï¼š</p>
<p>//ä¸‹é?¢è¿™ç¯‡æ–‡æ¡£æ?¥æº?äºŽInternetï¼Œä½œè€…ä¸?è¯¦</p>
<p>Reflection æ˜¯ Java ç¨‹åº?å¼€å?‘è¯­è¨€çš„ç‰¹å¾?ä¹‹ä¸€ï¼Œå®ƒå…?è®¸è¿?è¡Œä¸­çš„ Java ç¨‹åº?å¯¹è‡ªèº«è¿›è¡Œæ£€æŸ¥ï¼Œæˆ–è€…è¯´â€œè‡ªå®¡â€?ï¼Œå¹¶èƒ½ç›´æŽ¥æ“?ä½œç¨‹åº?çš„å†…éƒ¨å±žæ€§ã€‚ä¾‹å¦‚ï¼Œä½¿ç”¨å®ƒèƒ½èŽ·å¾— Java ç±»ä¸­å?„æˆ?å‘˜çš„å??ç§°å¹¶æ˜¾ç¤ºå‡ºæ?¥ã€‚</p>
<p>Java çš„è¿™ä¸€èƒ½åŠ›åœ¨å®žé™…åº”ç”¨ä¸­ä¹Ÿè®¸ç”¨å¾—ä¸?æ˜¯å¾ˆå¤šï¼Œä½†æ˜¯åœ¨å…¶å®ƒçš„ç¨‹åº?è®¾è®¡è¯­è¨€ä¸­æ ¹æœ¬å°±ä¸?å­˜åœ¨è¿™ä¸€ç‰¹æ€§ã€‚ä¾‹å¦‚ï¼ŒPascalã€?C æˆ–è€… C++ ä¸­å°±æ²¡æœ‰åŠžæ³•åœ¨ç¨‹åº?ä¸­èŽ·å¾—å‡½æ•°å®šä¹‰ç›¸å…³çš„ä¿¡æ?¯ã€‚</p>
<p>JavaBean æ˜¯ reflection çš„å®žé™…åº”ç”¨ä¹‹ä¸€ï¼Œå®ƒèƒ½è®©ä¸€äº›å·¥å…·å?¯è§†åŒ–çš„æ“?ä½œè½¯ä»¶ç»„ä»¶ã€‚è¿™äº›å·¥å…·é€šè¿‡ reflection åŠ¨æ€?çš„è½½å…¥å¹¶å?–å¾— Java ç»„ä»¶(ç±») çš„å±žæ€§ã€‚</p>
<p>1. ä¸€ä¸ªç®€å?•çš„ä¾‹å­?</p>
<p>è€ƒè™‘ä¸‹é?¢è¿™ä¸ªç®€å?•çš„ä¾‹å­?ï¼Œè®©æˆ‘ä»¬çœ‹çœ‹ reflection æ˜¯å¦‚ä½•å·¥ä½œçš„ã€‚</p>
<p>import java.lang.reflect.*;<br />public class DumpMethods {<br />Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class c = Class.forName(args[0]);<br />Â Â Â Â Â Â Â Â Â Â  Method m[] = c.getDeclaredMethods();<br />Â Â Â Â Â Â Â Â Â Â  for (int i = 0; i Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(m[i].toString());<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>æŒ‰å¦‚ä¸‹è¯­å?¥æ‰§è¡Œï¼š</p>
<p>java DumpMethods java.util.Stack</p>
<p>å®ƒçš„ç»“æžœè¾“å‡ºä¸ºï¼š</p>
<p>public java.lang.Object java.util.Stack.push(java.lang.Object)</p>
<p>public synchronized java.lang.Object java.util.Stack.pop()</p>
<p>public synchronized java.lang.Object java.util.Stack.peek()</p>
<p>public boolean java.util.Stack.empty()</p>
<p>public synchronized int java.util.Stack.search(java.lang.Object)</p>
<p>è¿™æ ·å°±åˆ—å‡ºäº†java.util.Stack ç±»çš„å?„æ–¹æ³•å??ä»¥å?Šå®ƒä»¬çš„é™?åˆ¶ç¬¦å’Œè¿”å›žç±»åž‹ã€‚</p>
<p>è¿™ä¸ªç¨‹åº?ä½¿ç”¨ Class.forName è½½å…¥æŒ‡å®šçš„ç±»ï¼Œç„¶å?Žè°ƒç”¨ getDeclaredMethods æ?¥èŽ·å?–è¿™ä¸ªç±»ä¸­å®šä¹‰äº†çš„æ–¹æ³•åˆ—è¡¨ã€‚java.lang.reflect.Methods æ˜¯ç”¨æ?¥æ??è¿°æŸ?ä¸ªç±»ä¸­å?•ä¸ªæ–¹æ³•çš„ä¸€ä¸ªç±»ã€‚</p>
<p>2.å¼€å§‹ä½¿ç”¨ Reflection</p>
<p>ç”¨äºŽ reflection çš„ç±»ï¼Œå¦‚ Methodï¼Œå?¯ä»¥åœ¨ java.lang.relfect åŒ…ä¸­æ‰¾åˆ°ã€‚ä½¿ç”¨è¿™äº›ç±»çš„æ—¶å€™å¿…é¡»è¦?é?µå¾ªä¸‰ä¸ªæ­¥éª¤ï¼šç¬¬ä¸€æ­¥æ˜¯èŽ·å¾—ä½ æƒ³æ“?ä½œçš„ç±»çš„ java.lang.Class å¯¹è±¡ã€‚åœ¨è¿?è¡Œä¸­çš„ Java ç¨‹åº?ä¸­ï¼Œç”¨ java.lang.Class ç±»æ?¥æ??è¿°ç±»å’ŒæŽ¥å?£ç­‰ã€‚</p>
<p>ä¸‹é?¢å°±æ˜¯èŽ·å¾—ä¸€ä¸ª Class å¯¹è±¡çš„æ–¹æ³•ä¹‹ä¸€ï¼š</p>
<p>Class c = Class.forName(&#8220;java.lang.String&#8221;);</p>
<p>è¿™æ?¡è¯­å?¥å¾—åˆ°ä¸€ä¸ª String ç±»çš„ç±»å¯¹è±¡ã€‚è¿˜æœ‰å?¦ä¸€ç§?æ–¹æ³•ï¼Œå¦‚ä¸‹é?¢çš„è¯­å?¥ï¼š</p>
<p>Class c = int.class;</p>
<p>æˆ–è€…</p>
<p>Class c = Integer.TYPE;</p>
<p>å®ƒä»¬å?¯èŽ·å¾—åŸºæœ¬ç±»åž‹çš„ç±»ä¿¡æ?¯ã€‚å…¶ä¸­å?Žä¸€ç§?æ–¹æ³•ä¸­è®¿é—®çš„æ˜¯åŸºæœ¬ç±»åž‹çš„å°?è£…ç±» (å¦‚ Integer) ä¸­é¢„å…ˆå®šä¹‰å¥½çš„ TYPE å­—æ®µã€‚</p>
<p>ç¬¬äºŒæ­¥æ˜¯è°ƒç”¨è¯¸å¦‚ getDeclaredMethods çš„æ–¹æ³•ï¼Œä»¥å?–å¾—è¯¥ç±»ä¸­å®šä¹‰çš„æ‰€æœ‰æ–¹æ³•çš„åˆ—è¡¨ã€‚</p>
<p>ä¸€æ—¦å?–å¾—è¿™ä¸ªä¿¡æ?¯ï¼Œå°±å?¯ä»¥è¿›è¡Œç¬¬ä¸‰æ­¥äº†â€”â€”ä½¿ç”¨ reflection API æ?¥æ“?ä½œè¿™äº›ä¿¡æ?¯ï¼Œå¦‚ä¸‹é?¢è¿™æ®µä»£ç ?ï¼š</p>
<p>Class c = Class.forName(&#8220;java.lang.String&#8221;);</p>
<p>Method m[] = c.getDeclaredMethods();</p>
<p>System.out.println(m[0].toString());</p>
<p>å®ƒå°†ä»¥æ–‡æœ¬æ–¹å¼?æ‰“å?°å‡º String ä¸­å®šä¹‰çš„ç¬¬ä¸€ä¸ªæ–¹æ³•çš„åŽŸåž‹ã€‚</p>
<p>åœ¨ä¸‹é?¢çš„ä¾‹å­?ä¸­ï¼Œè¿™ä¸‰ä¸ªæ­¥éª¤å°†ä¸ºä½¿ç”¨ reflection å¤„ç?†ç‰¹æ®Šåº”ç”¨ç¨‹åº?æ??ä¾›ä¾‹è¯?ã€‚</p>
<p>æ¨¡æ‹Ÿ instanceof æ“?ä½œç¬¦</p>
<p>å¾—åˆ°ç±»ä¿¡æ?¯ä¹‹å?Žï¼Œé€šå¸¸ä¸‹ä¸€ä¸ªæ­¥éª¤å°±æ˜¯è§£å†³å…³äºŽ Class å¯¹è±¡çš„ä¸€äº›åŸºæœ¬çš„é—®é¢˜ã€‚ä¾‹å¦‚ï¼ŒClass.isInstance æ–¹æ³•å?¯ä»¥ç”¨äºŽæ¨¡æ‹Ÿ instanceof æ“?ä½œç¬¦ï¼š</p>
<p>class A {<br />}</p>
<p>public class instance1 {<br />Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(&#8220;A&#8221;);<br />Â Â Â Â Â Â Â Â Â Â  boolean b1 = cls.isInstance(new Integer(37));<br />Â Â Â Â Â Â Â Â Â Â  System.out.println(b1);<br />Â Â Â Â Â Â Â Â Â Â  boolean b2 = cls.isInstance(new A());<br />Â Â Â Â Â Â Â Â Â Â  System.out.println(b2);<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>åœ¨è¿™ä¸ªä¾‹å­?ä¸­åˆ›å»ºäº†ä¸€ä¸ª A ç±»çš„ Class å¯¹è±¡ï¼Œç„¶å?Žæ£€æŸ¥ä¸€äº›å¯¹è±¡æ˜¯å?¦æ˜¯ A çš„å®žä¾‹ã€‚Integer(37) ä¸?æ˜¯ï¼Œä½† new A() æ˜¯ã€‚</p>
<p>3.æ‰¾å‡ºç±»çš„æ–¹æ³•</p>
<p>æ‰¾å‡ºä¸€ä¸ªç±»ä¸­å®šä¹‰äº†äº›ä»€ä¹ˆæ–¹æ³•ï¼Œè¿™æ˜¯ä¸€ä¸ªé?žå¸¸æœ‰ä»·å€¼ä¹Ÿé?žå¸¸åŸºç¡€çš„ reflection ç”¨æ³•ã€‚ä¸‹é?¢çš„ä»£ç ?å°±å®žçŽ°äº†è¿™ä¸€ç”¨æ³•ï¼š</p>
<p>import java.lang.reflect.*;</p>
<p>public class method1 {<br />Â Â  private int f1(Object p, int x) throws NullPointerException {<br />Â Â Â Â Â Â  if (p == null)<br />Â Â Â Â Â Â Â Â Â Â  throw new NullPointerException();<br />Â Â Â Â Â Â  return x;<br />Â Â  }</p>
<p>Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(&#8220;method1&#8243;);<br />Â Â Â Â Â Â Â Â Â Â  Method methlist[] = cls.getDeclaredMethods();<br />Â Â Â Â Â Â Â Â Â Â  for (int i = 0; i Â Â Â Â Â Â Â Â Â Â Â Â Â Â  Method m = methlist[i];<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;name = &#8221; + m.getName());<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;decl class = &#8221; + m.getDeclaringClass());<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  Class pvec[] = m.getParameterTypes();<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  for (int j = 0; j Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;param #&#8221; + j + &#8221; &#8221; + pvec[j]);<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  Class evec[] = m.getExceptionTypes();<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  for (int j = 0; j Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;exc #&#8221; + j + &#8221; &#8221; + evec[j]);<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;return type = &#8221; + m.getReturnType());<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;&#8212;&#8211;&#8221;);<br />Â Â Â Â Â Â Â Â Â Â  }<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>è¿™ä¸ªç¨‹åº?é¦–å…ˆå?–å¾— method1 ç±»çš„æ??è¿°ï¼Œç„¶å?Žè°ƒç”¨ getDeclaredMethods æ?¥èŽ·å?–ä¸€ç³»åˆ—çš„ Method å¯¹è±¡ï¼Œå®ƒä»¬åˆ†åˆ«æ??è¿°äº†å®šä¹‰åœ¨ç±»ä¸­çš„æ¯?ä¸€ä¸ªæ–¹æ³•ï¼ŒåŒ…æ‹¬ public æ–¹æ³•ã€?protected æ–¹æ³•ã€?package æ–¹æ³•å’Œ private æ–¹æ³•ç­‰ã€‚å¦‚æžœä½ åœ¨ç¨‹åº?ä¸­ä½¿ç”¨ getMethods æ?¥ä»£æ›¿ getDeclaredMethodsï¼Œä½ è¿˜èƒ½èŽ·å¾—ç»§æ‰¿æ?¥çš„å?„ä¸ªæ–¹æ³•çš„ä¿¡æ?¯ã€‚</p>
<p>å?–å¾—äº† Method å¯¹è±¡åˆ—è¡¨ä¹‹å?Žï¼Œè¦?æ˜¾ç¤ºè¿™äº›æ–¹æ³•çš„å?‚æ•°ç±»åž‹ã€?å¼‚å¸¸ç±»åž‹å’Œè¿”å›žå€¼ç±»åž‹ç­‰å°±ä¸?éš¾äº†ã€‚è¿™äº›ç±»åž‹æ˜¯åŸºæœ¬ç±»åž‹è¿˜æ˜¯ç±»ç±»åž‹ï¼Œéƒ½å?¯ä»¥ç”±æ??è¿°ç±»çš„å¯¹è±¡æŒ‰é¡ºåº?ç»™å‡ºã€‚</p>
<p>è¾“å‡ºçš„ç»“æžœå¦‚ä¸‹ï¼š</p>
<p>name = f1</p>
<p>decl class = class method1</p>
<p>param #0 class java.lang.Object</p>
<p>param #1 int</p>
<p>exc #0 class java.lang.NullPointerException</p>
<p>return type = int</p>
<p>&#8212;&#8211;</p>
<p>name = main</p>
<p>decl class = class method1</p>
<p>param #0 class [Ljava.lang.String;</p>
<p>return type = void</p>
<p>-----</p>
<p>4.èŽ·å?–æž„é€ å™¨ä¿¡æ?¯</p>
<p>èŽ·å?–ç±»æž„é€ å™¨çš„ç”¨æ³•ä¸Žä¸Šè¿°èŽ·å?–æ–¹æ³•çš„ç”¨æ³•ç±»ä¼¼ï¼Œå¦‚ï¼š</p>
<p>import java.lang.reflect.*;</p>
<p>public class constructor1 {<br />Â Â  public constructor1() {<br />Â Â  }</p>
<p>Â Â  protected constructor1(int i, double d) {<br />Â Â  }</p>
<p>Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(&#8220;constructor1&#8243;);<br />Â Â Â Â Â Â Â Â Â Â  Constructor ctorlist[] = cls.getDeclaredConstructors();<br />Â Â Â Â Â Â Â Â Â Â  for (int i = 0; i Â Â Â Â Â Â Â Â Â Â Â Â Â Â  Constructor ct = ctorlist[i];<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;name = &#8221; + ct.getName());<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;decl class = &#8221; + ct.getDeclaringClass());<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  Class pvec[] = ct.getParameterTypes();<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  for (int j = 0; j Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;param #&#8221; + j + &#8221; &#8221; + pvec[j]);<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  Class evec[] = ct.getExceptionTypes();<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  for (int j = 0; j Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;exc #&#8221; + j + &#8221; &#8221; + evec[j]);<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;&#8212;&#8211;&#8221;);<br />Â Â Â Â Â Â Â Â Â Â  }<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>è¿™ä¸ªä¾‹å­?ä¸­æ²¡èƒ½èŽ·å¾—è¿”å›žç±»åž‹çš„ç›¸å…³ä¿¡æ?¯ï¼Œé‚£æ˜¯å› ä¸ºæž„é€ å™¨æ²¡æœ‰è¿”å›žç±»åž‹ã€‚</p>
<p>è¿™ä¸ªç¨‹åº?è¿?è¡Œçš„ç»“æžœæ˜¯ï¼š</p>
<p>name = constructor1</p>
<p>decl class = class constructor1</p>
<p>&#8212;&#8211;</p>
<p>name = constructor1</p>
<p>decl class = class constructor1</p>
<p>param #0 int</p>
<p>param #1 double</p>
<p>&#8212;&#8211;</p>
<p>5.èŽ·å?–ç±»çš„å­—æ®µ(åŸŸ)</p>
<p>æ‰¾å‡ºä¸€ä¸ªç±»ä¸­å®šä¹‰äº†å“ªäº›æ•°æ?®å­—æ®µä¹Ÿæ˜¯å?¯èƒ½çš„ï¼Œä¸‹é?¢çš„ä»£ç ?å°±åœ¨å¹²è¿™ä¸ªäº‹æƒ…ï¼š</p>
<p>import java.lang.reflect.*;</p>
<p>public class field1 {<br />Â Â  private double d;<br />Â Â  public static final int i = 37;<br />Â Â  String s = &#8220;testing&#8221;;</p>
<p>Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(&#8220;field1&#8243;);<br />Â Â Â Â Â Â Â Â Â Â  Field fieldlist[] = cls.getDeclaredFields();<br />Â Â Â Â Â Â Â Â Â Â  for (int i = 0; i Â Â Â Â Â Â Â Â Â Â Â Â Â Â  Field fld = fieldlist[i];<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;name = &#8221; + fld.getName());<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;decl class = &#8221; + fld.getDeclaringClass());<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;type = &#8221; + fld.getType());<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  int mod = fld.getModifiers();<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;modifiers = &#8221; + Modifier.toString(mod));<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;&#8212;&#8211;&#8221;);<br />Â Â Â Â Â Â Â Â Â Â  }<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>è¿™ä¸ªä¾‹å­?å’Œå‰?é?¢é‚£ä¸ªä¾‹å­?é?žå¸¸ç›¸ä¼¼ã€‚ä¾‹ä¸­ä½¿ç”¨äº†ä¸€ä¸ªæ–°ä¸œè¥¿ Modifierï¼Œå®ƒä¹Ÿæ˜¯ä¸€ä¸ª reflection ç±»ï¼Œç”¨æ?¥æ??è¿°å­—æ®µæˆ?å‘˜çš„ä¿®é¥°è¯­ï¼Œå¦‚â€œprivate intâ€?ã€‚è¿™äº›ä¿®é¥°è¯­è‡ªèº«ç”±æ•´æ•°æ??è¿°ï¼Œè€Œä¸”ä½¿ç”¨ Modifier.toString æ?¥è¿”å›žä»¥â€œå®˜æ–¹â€?é¡ºåº?æŽ’åˆ—çš„å­—ç¬¦ä¸²æ??è¿° (å¦‚â€œstaticâ€?åœ¨â€œfinalâ€?ä¹‹å‰?)ã€‚è¿™ä¸ªç¨‹åº?çš„è¾“å‡ºæ˜¯ï¼š</p>
<p>name = d</p>
<p>decl class = class field1</p>
<p>type = double</p>
<p>modifiers = private</p>
<p>&#8212;&#8211;</p>
<p>name = i</p>
<p>decl class = class field1</p>
<p>type = int</p>
<p>modifiers = public static final</p>
<p>&#8212;&#8211;</p>
<p>name = s</p>
<p>decl class = class field1</p>
<p>type = class java.lang.String</p>
<p>modifiers =</p>
<p>&#8212;&#8211;</p>
<p>å’ŒèŽ·å?–æ–¹æ³•çš„æƒ…å†µä¸€ä¸‹ï¼ŒèŽ·å?–å­—æ®µçš„æ—¶å€™ä¹Ÿå?¯ä»¥å?ªå?–å¾—åœ¨å½“å‰?ç±»ä¸­ç”³æ˜Žäº†çš„å­—æ®µä¿¡æ?¯ (getDeclaredFields)ï¼Œæˆ–è€…ä¹Ÿå?¯ä»¥å?–å¾—çˆ¶ç±»ä¸­å®šä¹‰çš„å­—æ®µ (getFields) ã€‚</p>
<p>6.æ ¹æ?®æ–¹æ³•çš„å??ç§°æ?¥æ‰§è¡Œæ–¹æ³•</p>
<p>æ–‡æœ¬åˆ°è¿™é‡Œï¼Œæ‰€ä¸¾çš„ä¾‹å­?æ— ä¸€ä¾‹å¤–éƒ½ä¸Žå¦‚ä½•èŽ·å?–ç±»çš„ä¿¡æ?¯æœ‰å…³ã€‚æˆ‘ä»¬ä¹Ÿå?¯ä»¥ç”¨ reflection æ?¥å?šä¸€äº›å…¶å®ƒçš„äº‹æƒ…ï¼Œæ¯”å¦‚æ‰§è¡Œä¸€ä¸ªæŒ‡å®šäº†å??ç§°çš„æ–¹æ³•ã€‚ä¸‹é?¢çš„ç¤ºä¾‹æ¼”ç¤ºäº†è¿™ä¸€æ“?ä½œï¼š</p>
<p>import java.lang.reflect.*;<br />public class method2 {<br />Â Â  public int add(int a, int b) {<br />Â Â Â Â Â Â  return a + b;<br />Â Â  }<br />Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(&#8220;method2&#8243;);<br />Â Â Â Â Â Â Â Â Â Â  Class partypes[] = new Class[2];<br />Â Â Â Â Â Â Â Â Â Â  partypes[0] = Integer.TYPE;<br />Â Â Â Â Â Â Â Â Â Â  partypes[1] = Integer.TYPE;<br />Â Â Â Â Â Â Â Â Â Â  Method meth = cls.getMethod(&#8220;add&#8221;, partypes);<br />Â Â Â Â Â Â Â Â Â Â  method2 methobj = new method2();<br />Â Â Â Â Â Â Â Â Â Â  Object arglist[] = new Object[2];<br />Â Â Â Â Â Â Â Â Â Â  arglist[0] = new Integer(37);<br />Â Â Â Â Â Â Â Â Â Â  arglist[1] = new Integer(47);<br />Â Â Â Â Â Â Â Â Â Â  Object retobj = meth.invoke(methobj, arglist);<br />Â Â Â Â Â Â Â Â Â Â  Integer retval = (Integer) retobj;<br />Â Â Â Â Â Â Â Â Â Â  System.out.println(retval.intvalue());<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>å?‡å¦‚ä¸€ä¸ªç¨‹åº?åœ¨æ‰§è¡Œçš„æŸ?å¤„çš„æ—¶å€™æ‰?çŸ¥é?“éœ€è¦?æ‰§è¡ŒæŸ?ä¸ªæ–¹æ³•ï¼Œè¿™ä¸ªæ–¹æ³•çš„å??ç§°æ˜¯åœ¨ç¨‹åº?çš„è¿?è¡Œè¿‡ç¨‹ä¸­æŒ‡å®šçš„ (ä¾‹å¦‚ï¼ŒJavaBean å¼€å?‘çŽ¯å¢ƒä¸­å°±ä¼šå?šè¿™æ ·çš„äº‹)ï¼Œé‚£ä¹ˆä¸Šé?¢çš„ç¨‹åº?æ¼”ç¤ºäº†å¦‚ä½•å?šåˆ°ã€‚</p>
<p>ä¸Šä¾‹ä¸­ï¼ŒgetMethod ç”¨äºŽæŸ¥æ‰¾ä¸€ä¸ªå…·æœ‰ä¸¤ä¸ªæ•´åž‹å?‚æ•°ä¸”å??ä¸º add çš„æ–¹æ³•ã€‚æ‰¾åˆ°è¯¥æ–¹æ³•å¹¶åˆ›å»ºäº†ç›¸åº”çš„ Method å¯¹è±¡ä¹‹å?Žï¼Œåœ¨æ­£ç¡®çš„å¯¹è±¡å®žä¾‹ä¸­æ‰§è¡Œå®ƒã€‚æ‰§è¡Œè¯¥æ–¹æ³•çš„æ—¶å€™ï¼Œéœ€è¦?æ??ä¾›ä¸€ä¸ªå?‚æ•°åˆ—è¡¨ï¼Œè¿™åœ¨ä¸Šä¾‹ä¸­æ˜¯åˆ†åˆ«åŒ…è£…äº†æ•´æ•° 37 å’Œ 47 çš„ä¸¤ä¸ª Integer å¯¹è±¡ã€‚æ‰§è¡Œæ–¹æ³•çš„è¿”å›žçš„å?Œæ ·æ˜¯ä¸€ä¸ª Integer å¯¹è±¡ï¼Œå®ƒå°?è£…äº†è¿”å›žå€¼ 84ã€‚</p>
<p>7.åˆ›å»ºæ–°çš„å¯¹è±¡</p>
<p>å¯¹äºŽæž„é€ å™¨ï¼Œåˆ™ä¸?èƒ½åƒ?æ‰§è¡Œæ–¹æ³•é‚£æ ·è¿›è¡Œï¼Œå› ä¸ºæ‰§è¡Œä¸€ä¸ªæž„é€ å™¨å°±æ„?å‘³ç?€åˆ›å»ºäº†ä¸€ä¸ªæ–°çš„å¯¹è±¡ (å‡†ç¡®çš„è¯´ï¼Œåˆ›å»ºä¸€ä¸ªå¯¹è±¡çš„è¿‡ç¨‹åŒ…æ‹¬åˆ†é…?å†…å­˜å’Œæž„é€ å¯¹è±¡)ã€‚æ‰€ä»¥ï¼Œä¸Žä¸Šä¾‹æœ€ç›¸ä¼¼çš„ä¾‹å­?å¦‚ä¸‹ï¼š</p>
<p>import java.lang.reflect.*;</p>
<p>public class constructor2 {<br />Â Â  public constructor2() {<br />Â Â  }</p>
<p>Â Â  public constructor2(int a, int b) {<br />Â Â Â Â Â Â  System.out.println(&#8220;a = &#8221; + a + &#8221; b = &#8221; + b);<br />Â Â  }</p>
<p>Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(&#8220;constructor2&#8243;);<br />Â Â Â Â Â Â Â Â Â Â  Class partypes[] = new Class[2];<br />Â Â Â Â Â Â Â Â Â Â  partypes[0] = Integer.TYPE;<br />Â Â Â Â Â Â Â Â Â Â  partypes[1] = Integer.TYPE;<br />Â Â Â Â Â Â Â Â Â Â  Constructor ct = cls.getConstructor(partypes);<br />Â Â Â Â Â Â Â Â Â Â  Object arglist[] = new Object[2];<br />Â Â Â Â Â Â Â Â Â Â  arglist[0] = new Integer(37);<br />Â Â Â Â Â Â Â Â Â Â  arglist[1] = new Integer(47);<br />Â Â Â Â Â Â Â Â Â Â  Object retobj = ct.newInstance(arglist);<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>æ ¹æ?®æŒ‡å®šçš„å?‚æ•°ç±»åž‹æ‰¾åˆ°ç›¸åº”çš„æž„é€ å‡½æ•°å¹¶æ‰§è¡Œå®ƒï¼Œä»¥åˆ›å»ºä¸€ä¸ªæ–°çš„å¯¹è±¡å®žä¾‹ã€‚ä½¿ç”¨è¿™ç§?æ–¹æ³•å?¯ä»¥åœ¨ç¨‹åº?è¿?è¡Œæ—¶åŠ¨æ€?åœ°åˆ›å»ºå¯¹è±¡ï¼Œè€Œä¸?æ˜¯åœ¨ç¼–è¯‘çš„æ—¶å€™åˆ›å»ºå¯¹è±¡ï¼Œè¿™ä¸€ç‚¹é?žå¸¸æœ‰ä»·å€¼ã€‚</p>
<p>8.æ”¹å?˜å­—æ®µ(åŸŸ)çš„å€¼</p>
<p>reflection çš„è¿˜æœ‰ä¸€ä¸ªç”¨å¤„å°±æ˜¯æ”¹å?˜å¯¹è±¡æ•°æ?®å­—æ®µçš„å€¼ã€‚reflection å?¯ä»¥ä»Žæ­£åœ¨è¿?è¡Œçš„ç¨‹åº?ä¸­æ ¹æ?®å??ç§°æ‰¾åˆ°å¯¹è±¡çš„å­—æ®µå¹¶æ”¹å?˜å®ƒï¼Œä¸‹é?¢çš„ä¾‹å­?å?¯ä»¥è¯´æ˜Žè¿™ä¸€ç‚¹ï¼š</p>
<p>import java.lang.reflect.*;</p>
<p>public class field2 {<br />Â Â  public double d;</p>
<p>Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(&#8220;field2&#8243;);<br />Â Â Â Â Â Â Â Â Â Â  Field fld = cls.getField(&#8220;d&#8221;);<br />Â Â Â Â Â Â Â Â Â Â  field2 f2obj = new field2();<br />Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;d = &#8221; + f2obj.d);<br />Â Â Â Â Â Â Â Â Â Â  fld.setDouble(f2obj, 12.34);<br />Â Â Â Â Â Â Â Â Â Â  System.out.println(&#8220;d = &#8221; + f2obj.d);<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>è¿™ä¸ªä¾‹å­?ä¸­ï¼Œå­—æ®µ d çš„å€¼è¢«å?˜ä¸ºäº† 12.34ã€‚</p>
<p>9.ä½¿ç”¨æ•°ç»„</p>
<p>æœ¬æ–‡ä»‹ç»?çš„ reflection çš„æœ€å?Žä¸€ç§?ç”¨æ³•æ˜¯åˆ›å»ºçš„æ“?ä½œæ•°ç»„ã€‚æ•°ç»„åœ¨ Java è¯­è¨€ä¸­æ˜¯ä¸€ç§?ç‰¹æ®Šçš„ç±»ç±»åž‹ï¼Œä¸€ä¸ªæ•°ç»„çš„å¼•ç”¨å?¯ä»¥èµ‹ç»™ Object å¼•ç”¨ã€‚è§‚å¯Ÿä¸‹é?¢çš„ä¾‹å­?çœ‹çœ‹æ•°ç»„æ˜¯æ€Žä¹ˆå·¥ä½œçš„ï¼š</p>
<p>import java.lang.reflect.*;</p>
<p>public class array1 {<br />Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  try {<br />Â Â Â Â Â Â Â Â Â Â  Class cls = Class.forName(&#8220;java.lang.String&#8221;);<br />Â Â Â Â Â Â Â Â Â Â  Object arr = Array.newInstance(cls, 10);<br />Â Â Â Â Â Â Â Â Â Â  Array.set(arr, 5, &#8220;this is a test&#8221;);<br />Â Â Â Â Â Â Â Â Â Â  String s = (String) Array.get(arr, 5);<br />Â Â Â Â Â Â Â Â Â Â  System.out.println(s);<br />Â Â Â Â Â Â  } catch (Throwable e) {<br />Â Â Â Â Â Â Â Â Â Â  System.err.println(e);<br />Â Â Â Â Â Â  }<br />Â Â  }<br />}</p>
<p>ä¾‹ä¸­åˆ›å»ºäº† 10 ä¸ªå?•ä½?é•¿åº¦çš„ String æ•°ç»„ï¼Œä¸ºç¬¬ 5 ä¸ªä½?ç½®çš„å­—ç¬¦ä¸²èµ‹äº†å€¼ï¼Œæœ€å?Žå°†è¿™ä¸ªå­—ç¬¦ä¸²ä»Žæ•°ç»„ä¸­å?–å¾—å¹¶æ‰“å?°äº†å‡ºæ?¥ã€‚</p>
<p>ä¸‹é?¢è¿™æ®µä»£ç ?æ??ä¾›äº†ä¸€ä¸ªæ›´å¤?æ?‚çš„ä¾‹å­?ï¼š</p>
<p>import java.lang.reflect.*;</p>
<p>public class array2 {<br />Â Â  public static void main(String args[]) {<br />Â Â Â Â Â Â  int dims[] = new int[]{5, 10, 15};<br />Â Â Â Â Â Â  Object arr = Array.newInstance(Integer.TYPE, dims);<br />Â Â Â Â Â Â  Object arrobj = Array.get(arr, 3);<br />Â Â Â Â Â Â  Class cls = arrobj.getClass().getComponentType();<br />Â Â Â Â Â Â  System.out.println(cls);<br />Â Â Â Â Â Â  arrobj = Array.get(arrobj, 5);<br />Â Â Â Â Â Â  Array.setInt(arrobj, 10, 37);<br />Â Â Â Â Â Â  int arrcast[][][] = (int[][][]) arr;<br />Â Â Â Â Â Â  System.out.println(arrcast[3][5][10]);<br />Â Â  }<br />}<br />ä¾‹ä¸­åˆ›å»ºäº†ä¸€ä¸ª 5 x 10 x 15 çš„æ•´åž‹æ•°ç»„ï¼Œå¹¶ä¸ºå¤„äºŽ [3][5][10] çš„å…ƒç´ èµ‹äº†å€¼ä¸º 37ã€‚æ³¨æ„?ï¼Œå¤šç»´æ•°ç»„å®žé™…ä¸Šå°±æ˜¯æ•°ç»„çš„æ•°ç»„ï¼Œä¾‹å¦‚ï¼Œç¬¬ä¸€ä¸ª Array.get ä¹‹å?Žï¼Œarrobj æ˜¯ä¸€ä¸ª 10 x 15 çš„æ•°ç»„ã€‚è¿›è€Œå?–å¾—å…¶ä¸­çš„ä¸€ä¸ªå…ƒç´ ï¼Œå?³é•¿åº¦ä¸º 15 çš„æ•°ç»„ï¼Œå¹¶ä½¿ç”¨ Array.setInt ä¸ºå®ƒçš„ç¬¬ 10 ä¸ªå…ƒç´ èµ‹å€¼ã€‚</p>
<p>æ³¨æ„?åˆ›å»ºæ•°ç»„æ—¶çš„ç±»åž‹æ˜¯åŠ¨æ€?çš„ï¼Œåœ¨ç¼–è¯‘æ—¶å¹¶ä¸?çŸ¥é?“å…¶ç±»åž‹ã€‚</p>
<p>technorati tags: <a rel="tag" href="http://technorati.com/tag/java">java</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yanwt.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yanwt.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yanwt.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yanwt.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yanwt.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yanwt.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yanwt.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yanwt.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yanwt.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yanwt.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yanwt.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yanwt.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yanwt.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yanwt.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yanwt.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yanwt.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=9&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yanwt.wordpress.com/2005/11/10/9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed49648f2f6bcd6605585706d2471cf8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yanwt</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://yanwt.wordpress.com/2005/11/10/8/</link>
		<comments>http://yanwt.wordpress.com/2005/11/10/8/#comments</comments>
		<pubDate>Thu, 10 Nov 2005 03:18:43 +0000</pubDate>
		<dc:creator>yanwt</dc:creator>
				<category><![CDATA[æœªåˆ†é¡žÂ·Uncategorized]]></category>

		<guid isPermaLink="false">http://yanwt.wordpress.com/2005/11/10//</guid>
		<description><![CDATA[LOG4Jçš„é…?ç½®ä¹‹ç®€å?•ä½¿å®ƒé??å?ŠäºŽè¶Šæ?¥è¶Šå¤šçš„åº”ç”¨ä¸­äº†ï¼šLog4Jé…?ç½®æ–‡ä»¶å®žçŽ°äº†è¾“å‡ºåˆ°æŽ§åˆ¶å?°ã€?æ–‡ä»¶ã€?å›žæ»šæ–‡ä»¶ã€?å?‘é€?æ—¥å¿—é‚®ä»¶ã€?è¾“å‡ºåˆ°æ•°æ?®åº“æ—¥å¿—è¡¨ã€?è‡ªå®šä¹‰æ ‡ç­¾ç­‰å…¨å¥—åŠŸèƒ½ã€‚æ‹©å…¶ä¸€äºŒä½¿ç”¨å°±å¤Ÿç”¨äº†ï¼Œ log4j.rootLogger=DEBUG,CONSOLE,A1,im log4j.addivity.org.apache=true # åº”ç”¨äºŽæŽ§åˆ¶å?° log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=DEBUG log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n #åº”ç”¨äºŽæ–‡ä»¶ log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=file.log log4j.appender.FILE.Append=false log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n # Use this layout for LogFactor 5 analysis # åº”ç”¨äºŽæ–‡ä»¶å›žæ»š log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLING_FILE.Threshold=ERROR log4j.appender.ROLLING_FILE.File=rolling.log log4j.appender.ROLLING_FILE.Append=true log4j.appender.ROLLING_FILE.MaxFileSize=10KB log4j.appender.ROLLING_FILE.MaxBackupIndex=1 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=8&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>LOG4Jçš„é…?ç½®ä¹‹ç®€å?•ä½¿å®ƒé??å?ŠäºŽè¶Šæ?¥è¶Šå¤šçš„åº”ç”¨ä¸­äº†ï¼šLog4Jé…?ç½®æ–‡ä»¶å®žçŽ°äº†è¾“å‡ºåˆ°æŽ§åˆ¶å?°ã€?æ–‡ä»¶ã€?å›žæ»šæ–‡ä»¶ã€?å?‘é€?æ—¥å¿—é‚®ä»¶ã€?è¾“å‡ºåˆ°æ•°æ?®åº“æ—¥å¿—è¡¨ã€?è‡ªå®šä¹‰æ ‡ç­¾ç­‰å…¨å¥—åŠŸèƒ½ã€‚æ‹©å…¶ä¸€äºŒä½¿ç”¨å°±å¤Ÿç”¨äº†ï¼Œ </p>
<p>log4j.rootLogger=DEBUG,CONSOLE,A1,im <br />log4j.addivity.org.apache=true </p>
<p># åº”ç”¨äºŽæŽ§åˆ¶å?° </p>
<p>log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender <br />log4j.appender.Threshold=DEBUG <br />log4j.appender.CONSOLE.Target=System.out <br />log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout <br />log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n <br />#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n </p>
<p>#åº”ç”¨äºŽæ–‡ä»¶ </p>
<p>log4j.appender.FILE=org.apache.log4j.FileAppender <br />log4j.appender.FILE.File=file.log <br />log4j.appender.FILE.Append=false <br />log4j.appender.FILE.layout=org.apache.log4j.PatternLayout <br />log4j.appender.FILE.layout.ConversionPattern=[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n <br /># Use this layout for LogFactor 5 analysis </p>
<p># åº”ç”¨äºŽæ–‡ä»¶å›žæ»š </p>
<p>log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender <br />log4j.appender.ROLLING_FILE.Threshold=ERROR <br />log4j.appender.ROLLING_FILE.File=rolling.log <br />log4j.appender.ROLLING_FILE.Append=true <br />log4j.appender.ROLLING_FILE.MaxFileSize=10KB <br />log4j.appender.ROLLING_FILE.MaxBackupIndex=1 <br />log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout <br />log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n </p>
<p>#åº”ç”¨äºŽsocket <br />log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender <br />log4j.appender.SOCKET.RemoteHost=localhost <br />log4j.appender.SOCKET.Port=5001 <br />log4j.appender.SOCKET.LocationInfo=true <br /># Set up for Log Facter 5 <br />log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout <br />log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n </p>
<p># Log Factor 5 Appender <br />log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender <br />log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000 </p>
<p># å?‘é€?æ—¥å¿—ç»™é‚®ä»¶ </p>
<p>log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender <br />log4j.appender.MAIL.Threshold=FATAL <br />log4j.appender.MAIL.BufferSize=10 <br />log4j.appender.MAIL.From=web@www.wuset.com <br />log4j.appender.MAIL.SMTPHost=www.wusetu.com <br />log4j.appender.MAIL.Subject=Log4J Message <br />log4j.appender.MAIL.To=web@www.wusetu.com <br />log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout <br />log4j.appender.MAIL.layout.ConversionPattern=[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n </p>
<p># ç”¨äºŽæ•°æ?®åº“ <br />log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender <br />log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test <br />log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver <br />log4j.appender.DATABASE.user=root <br />log4j.appender.DATABASE.password= <br />log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (&#8216;[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n&#8217;) <br />log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout <br />log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n </p>
<p>log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender <br />log4j.appender.A1.File=SampleMessages.log4j <br />log4j.appender.A1.DatePattern=yyyyMMdd-HH&#8217;.log4j&#8217; <br />log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout </p>
<p>#è‡ªå®šä¹‰Appender </p>
<p>log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender </p>
<p>log4j.appender.im.host = mail.cybercorlin.net <br />log4j.appender.im.username = username <br />log4j.appender.im.password = password <br />log4j.appender.im.recipient = corlin@cybercorlin.net </p>
<p>log4j.appender.im.layout=org.apache.log4j.PatternLayout <br />log4j.appender.im.layout.ConversionPattern =[framework] %d &#8211; %c -%-4r [%t] %-5p %c %x &#8211; %m%n </p>
<p>technorati tags: <a rel="tag" href="http://technorati.com/tag/log4j">log4j</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yanwt.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yanwt.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yanwt.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yanwt.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yanwt.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yanwt.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yanwt.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yanwt.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yanwt.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yanwt.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yanwt.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yanwt.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yanwt.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yanwt.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yanwt.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yanwt.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=8&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yanwt.wordpress.com/2005/11/10/8/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed49648f2f6bcd6605585706d2471cf8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yanwt</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://yanwt.wordpress.com/2005/11/03/%e5%9c%a8%e8%af%ba%e5%9f%ba%e4%ba%9a%e4%b8%ad%e7%94%a8nokia-ui%e5%b0%86%e5%9b%be%e7%89%87%e5%8f%98%e6%88%90%e5%8d%8a%e9%80%8f%e6%98%8e%e7%9a%84%e7%a8%8b%e5%ba%8f/</link>
		<comments>http://yanwt.wordpress.com/2005/11/03/%e5%9c%a8%e8%af%ba%e5%9f%ba%e4%ba%9a%e4%b8%ad%e7%94%a8nokia-ui%e5%b0%86%e5%9b%be%e7%89%87%e5%8f%98%e6%88%90%e5%8d%8a%e9%80%8f%e6%98%8e%e7%9a%84%e7%a8%8b%e5%ba%8f/#comments</comments>
		<pubDate>Thu, 03 Nov 2005 00:44:48 +0000</pubDate>
		<dc:creator>yanwt</dc:creator>
				<category><![CDATA[æœªåˆ†é¡žÂ·Uncategorized]]></category>

		<guid isPermaLink="false">http://yanwt.wordpress.com/2005/11/03/%e5%9c%a8%e8%af%ba%e5%9f%ba%e4%ba%9a%e4%b8%ad%e7%94%a8nokia-ui%e5%b0%86%e5%9b%be%e7%89%87%e5%8f%98%e6%88%90%e5%8d%8a%e9%80%8f%e6%98%8e%e7%9a%84%e7%a8%8b%e5%ba%8f/</guid>
		<description><![CDATA[/**Â Â Â  * å?Šé€?æ˜Žæ¸²æŸ“(å?ªé’ˆå¯¹çŸ©å½¢åŒºåŸŸ)Â Â Â  * @param g Graphics å›¾å½¢å¯¹è±¡Â Â Â  * @param X int æ¸²æŸ“çš„çŸ©å½¢åŒºåŸŸçš„å±?å¹•å??æ ‡XÂ Â Â  * @param Y int æ¸²æŸ“çš„çŸ©å½¢åŒºåŸŸçš„å±?å¹•å??æ ‡YÂ Â Â  * @param Width int æ¸²æŸ“çš„çŸ©å½¢åŒºåŸŸçš„å®½åº¦Â Â Â  * @param Height int æ¸²æŸ“çš„çŸ©å½¢åŒºåŸŸçš„é«˜åº¦Â Â Â  * @param Color int æ¸²æŸ“çš„é¢œè‰²(å?ªæœ‰å?Ž12ä½?bitæ‰?æœ‰æ•ˆ)Â Â Â  * @param transparence intÂ  æ¸²æŸ“ç¨‹åº¦,å€¼è¶Šå¤§,é‚£ä¹ˆæ¸²æŸ“è‰²æ¯”ä¾‹è¶Šå¤§,èƒŒæ™¯è‰²è¶Šå°?Â Â Â  */Â Â  protected void Game_Render_SemiTransparent(Graphics g, int X, int Y,Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  int Width,Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  int Height, int Color,Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  int transparence) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=6&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>/**<br />Â Â Â  * å?Šé€?æ˜Žæ¸²æŸ“(å?ªé’ˆå¯¹çŸ©å½¢åŒºåŸŸ)<br />Â Â Â  * @param g Graphics å›¾å½¢å¯¹è±¡<br />Â Â Â  * @param X int æ¸²æŸ“çš„çŸ©å½¢åŒºåŸŸçš„å±?å¹•å??æ ‡X<br />Â Â Â  * @param Y int æ¸²æŸ“çš„çŸ©å½¢åŒºåŸŸçš„å±?å¹•å??æ ‡Y<br />Â Â Â  * @param Width int æ¸²æŸ“çš„çŸ©å½¢åŒºåŸŸçš„å®½åº¦<br />Â Â Â  * @param Height int æ¸²æŸ“çš„çŸ©å½¢åŒºåŸŸçš„é«˜åº¦<br />Â Â Â  * @param Color int æ¸²æŸ“çš„é¢œè‰²(å?ªæœ‰å?Ž12ä½?bitæ‰?æœ‰æ•ˆ)<br />Â Â Â  * @param transparence intÂ  æ¸²æŸ“ç¨‹åº¦,å€¼è¶Šå¤§,é‚£ä¹ˆæ¸²æŸ“è‰²æ¯”ä¾‹è¶Šå¤§,èƒŒæ™¯è‰²è¶Šå°?<br />Â Â Â  */<br />Â Â  protected void Game_Render_SemiTransparent(Graphics g, int X, int Y,<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  int Width,<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  int Height, int Color,<br />Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  int transparence) {<br />Â Â Â Â  int i;<br />Â Â Â Â  short pixels[] = new short[Width];<br />Â Â Â Â  for (i = 0; i Â Â Â Â Â Â  pixels[i] = (short) ( (transparence Â Â Â Â  }<br />Â Â Â Â  for (i = 0; i Â Â Â Â Â Â  DirectUtils.getDirectGraphics(g).drawPixels(pixels, true, 0,<br />Â Â Â Â Â Â Â Â Â Â  Width, X, i + Y, Width, 1, 0,<br />Â Â Â Â Â Â Â Â Â Â  DirectGraphics.<br />Â Â Â Â Â Â Â Â Â Â  TYPE_USHORT_4444_ARGB);<br />Â Â Â Â  }<br />Â Â Â Â  pixels = null;<br />Â Â  }</p>
<p>Â </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yanwt.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yanwt.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yanwt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yanwt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yanwt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yanwt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yanwt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yanwt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yanwt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yanwt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yanwt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yanwt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yanwt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yanwt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yanwt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yanwt.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=6&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yanwt.wordpress.com/2005/11/03/%e5%9c%a8%e8%af%ba%e5%9f%ba%e4%ba%9a%e4%b8%ad%e7%94%a8nokia-ui%e5%b0%86%e5%9b%be%e7%89%87%e5%8f%98%e6%88%90%e5%8d%8a%e9%80%8f%e6%98%8e%e7%9a%84%e7%a8%8b%e5%ba%8f/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed49648f2f6bcd6605585706d2471cf8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yanwt</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://yanwt.wordpress.com/2005/11/03/midlet%e7%9a%84%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e7%9a%84%e6%b7%b1%e5%85%a5%e7%90%86%e8%a7%a3%e5%8f%8a%e6%b8%b8%e6%88%8f%e6%ad%bb%e6%9c%ba%e9%97%ae%e9%a2%98/</link>
		<comments>http://yanwt.wordpress.com/2005/11/03/midlet%e7%9a%84%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e7%9a%84%e6%b7%b1%e5%85%a5%e7%90%86%e8%a7%a3%e5%8f%8a%e6%b8%b8%e6%88%8f%e6%ad%bb%e6%9c%ba%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Thu, 03 Nov 2005 00:41:14 +0000</pubDate>
		<dc:creator>yanwt</dc:creator>
				<category><![CDATA[æœªåˆ†é¡žÂ·Uncategorized]]></category>

		<guid isPermaLink="false">http://yanwt.wordpress.com/2005/11/03/midlet%e7%9a%84%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e7%9a%84%e6%b7%b1%e5%85%a5%e7%90%86%e8%a7%a3%e5%8f%8a%e6%b8%b8%e6%88%8f%e6%ad%bb%e6%9c%ba%e9%97%ae%e9%a2%98/</guid>
		<description><![CDATA[å­¦ä¹ j2meï¼Œé¦–å…ˆè¦?äº†è§£MIDletçš„ç”Ÿå‘½å‘¨æœŸã€‚æœ¬æ–‡ä¸»è¦?æ˜¯æ·±å…¥äº†è§£ä¸€ä¸‹MIDletçš„ç”Ÿå‘½å‘¨æœŸã€‚ä»¥ä¸Šè‡ªå·±çš„ä¸ªäººå¿ƒå¾—ï¼Œä¸?å¯¹ä¹‹å¤„ï¼Œå¸Œæœ›å¤§å®¶å¤šå¤šæŒ‡ç‚¹ã€‚&#160;&#160;&#160; é¦–å…ˆåœ¨ä½ è¿?è¡Œä¸€ä¸ªç¨‹åº?çš„æ—¶å€™ï¼ŒJAMä¼šè°ƒç”¨è¯¥midletçš„æž„é€ å‡½æ•°æ?¥ç”Ÿæˆ?midletçš„å¯¹è±¡ï¼Œç„¶å?Žè¢«jamç½®äºŽPausedçŠ¶æ€?ã€‚ä¸€æ—¦jamè®¤ä¸ºè¿™ä¸ªmidletå¯¹è±¡å?¯ä»¥æ‰§è¡Œæ—¶ï¼Œjamå°±ä¼šè°ƒç”¨startApp()æ–¹æ³•ï¼Œå¹¶å°†æ­¤midletç½®äºŽActiveçŠ¶æ€?ã€‚startApp()æ–¹æ³•ç”±äºŽåœ¨ç³»ç»Ÿæ?¥ç”µã€?æˆ–è€…é€€å›žåˆ°ç³»ç»Ÿè?œå?•è¿”å›žæ—¶ä¼šè¢«å†?æ¬¡è°ƒç”¨ï¼Œæ‰€ä»¥è¿™é‡Œå?ªå?¯ä»¥æ”¾åˆ?å§‹åŒ–ä¸€æ¬¡çš„ä»£ç ?ã€‚æˆ–è€…ä½ æŠŠåˆ?å§‹åŒ–ä¸€æ¬¡çš„ä»£ç ?æ”¾åˆ°midletçš„æž„é€ å‡½æ•°ä¸­ã€‚ä¾‹å¦‚ï¼špublic class Midlet extends MIDlet{&#160; Display display = null;&#160; MyCanvas can;&#160; public Midelt(){&#160;&#160;&#160;&#160;&#160; display = Display.getDisplay(this);&#160;&#160;&#160;&#160;&#160; can = new MyCanvas();}&#160; public void startApp(){&#160;&#160;&#160;&#160; display.setCurrent(can);//å¦‚æžœæŠŠcan = new MyCanvas()æ”¾åˆ°è¿™é‡Œï¼Œå†?æ?¥ç”µè¿”å›žæ—¶å°±ä¼šå‡ºé—®é¢˜ã€‚}}æˆ–è€…public class Midlet extends MIDlet{&#160; Display display = null;&#160; MyCanvas can;&#160; public Midelt(){}&#160; public void startApp(){&#160;&#160;&#160;&#160;&#160; if(display ==null){&#160;&#160;&#160;&#160;&#160;&#160; display = Display.getDisplay(this);&#160;&#160;&#160;&#160;&#160;&#160; can = new MyCanvas();}//æ­¤å¤„å?ªä¼šè¢«è¿?è¡Œ1æ¬¡ï¼Œè¿™æ ·å°±ä¸?ä¼šå‡ºé”™&#160;&#160;&#160;&#160;&#160;&#160; display.setCurrent(can);//è¿™å?¥æŒ‰ç?†æ”¾åˆ°è¿™é‡Œæœ€å?ˆé€‚ï¼Œä½ æƒ³æ˜¾ç¤ºé‚£ä¸ªcanvaså°±æ”¾å“ªä¸ªï¼?}}åœ¨startApp()ä¸­ï¼Œä½ è°ƒç”¨display.setCurrent(can)çš„æ—¶å€™ï¼Œé¦–å…ˆè¿?è¡Œçš„æ˜¯showNotify()ï¼ŒæŽ¥ç?€è¿?è¡Œpaint()å‡½æ•°ä¸€æ¬¡ï¼Œå¦‚æžœæœ‰çº¿ç¨‹çš„è¯?ï¼Œæ­¤æ—¶run()æ–¹æ³•å¼€å§‹è¿?è¡Œã€‚ä¸€èˆ¬åœ¨run()æ–¹æ³•é‡Œä¸€èˆ¬è¿™ä¹ˆå†™ã€‚æ­¤æ—¶çš„run()æ˜¯å?¯ä»¥å¤„ç?†å¼‚æ­¥äº‹ä»¶çš„ï¼Œä¹Ÿå°±æ˜¯ä½ æ?¥ç”µè¯?çš„æ—¶å€™ï¼Œè¿™é‡Œrun()è¿˜æ˜¯è¿?è¡Œçš„ã€‚ä¸?è¿‡ä»–ä¸?ä¼špaint()ä»€ä¹ˆä¸œè¥¿ï¼Œå?³ä½¿å®ƒé‡Œé?¢æœ‰repaint()ï¼Œè¿™ç‚¹æ”¾å¿ƒã€‚ public void [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=4&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>å­¦ä¹ j2meï¼Œé¦–å…ˆè¦?äº†è§£MIDletçš„ç”Ÿå‘½å‘¨æœŸã€‚æœ¬æ–‡ä¸»è¦?æ˜¯æ·±å…¥äº†è§£ä¸€ä¸‹MIDletçš„ç”Ÿå‘½å‘¨æœŸã€‚ä»¥ä¸Šè‡ªå·±çš„ä¸ªäººå¿ƒå¾—ï¼Œä¸?å¯¹ä¹‹å¤„ï¼Œå¸Œæœ›å¤§å®¶å¤šå¤šæŒ‡ç‚¹ã€‚&nbsp;&nbsp;&nbsp; é¦–å…ˆåœ¨ä½ è¿?è¡Œä¸€ä¸ªç¨‹åº?çš„æ—¶å€™ï¼ŒJAMä¼šè°ƒç”¨è¯¥midletçš„æž„é€ å‡½æ•°æ?¥ç”Ÿæˆ?midletçš„å¯¹è±¡ï¼Œç„¶å?Žè¢«jamç½®äºŽPausedçŠ¶æ€?ã€‚ä¸€æ—¦jamè®¤ä¸ºè¿™ä¸ªmidletå¯¹è±¡å?¯ä»¥æ‰§è¡Œæ—¶ï¼Œjamå°±ä¼šè°ƒç”¨startApp()æ–¹æ³•ï¼Œå¹¶å°†æ­¤midletç½®äºŽActiveçŠ¶æ€?ã€‚startApp()æ–¹æ³•ç”±äºŽåœ¨ç³»ç»Ÿæ?¥ç”µã€?æˆ–è€…é€€å›žåˆ°ç³»ç»Ÿè?œå?•è¿”å›žæ—¶ä¼šè¢«å†?æ¬¡è°ƒç”¨ï¼Œæ‰€ä»¥è¿™é‡Œå?ªå?¯ä»¥æ”¾åˆ?å§‹åŒ–ä¸€æ¬¡çš„ä»£ç ?ã€‚æˆ–è€…ä½ æŠŠåˆ?å§‹åŒ–ä¸€æ¬¡çš„ä»£ç ?æ”¾åˆ°midletçš„æž„é€ å‡½æ•°ä¸­ã€‚ä¾‹å¦‚ï¼š<br />public class Midlet extends MIDlet{<br />&nbsp; Display display = null;<br />&nbsp; MyCanvas can;<br />&nbsp; public Midelt(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display = Display.getDisplay(this);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; can = new MyCanvas();<br />}<br />&nbsp; public void startApp(){<br />&nbsp;&nbsp;&nbsp;&nbsp; display.setCurrent(can);//å¦‚æžœæŠŠcan = new MyCanvas()æ”¾åˆ°è¿™é‡Œï¼Œå†?æ?¥ç”µè¿”å›žæ—¶å°±ä¼šå‡ºé—®é¢˜ã€‚<br />}<br />}<br />æˆ–è€…<br />public class Midlet extends MIDlet{<br />&nbsp; Display display = null;<br />&nbsp; MyCanvas can;<br />&nbsp; public Midelt(){<br />}<br />&nbsp; public void startApp(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(display ==null){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display = Display.getDisplay(this);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; can = new MyCanvas();<br />}//æ­¤å¤„å?ªä¼šè¢«è¿?è¡Œ1æ¬¡ï¼Œè¿™æ ·å°±ä¸?ä¼šå‡ºé”™<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display.setCurrent(can);//è¿™å?¥æŒ‰ç?†æ”¾åˆ°è¿™é‡Œæœ€å?ˆé€‚ï¼Œä½ æƒ³æ˜¾ç¤ºé‚£ä¸ªcanvaså°±æ”¾å“ªä¸ªï¼?<br />}<br />}<br />åœ¨startApp()ä¸­ï¼Œä½ è°ƒç”¨display.setCurrent(can)çš„æ—¶å€™ï¼Œé¦–å…ˆè¿?è¡Œçš„æ˜¯showNotify()ï¼ŒæŽ¥ç?€è¿?è¡Œpaint()å‡½æ•°ä¸€æ¬¡ï¼Œå¦‚æžœæœ‰çº¿ç¨‹çš„è¯?ï¼Œæ­¤æ—¶run()æ–¹æ³•å¼€å§‹è¿?è¡Œã€‚ä¸€èˆ¬åœ¨run()æ–¹æ³•é‡Œä¸€èˆ¬è¿™ä¹ˆå†™ã€‚æ­¤æ—¶çš„run()æ˜¯å?¯ä»¥å¤„ç?†å¼‚æ­¥äº‹ä»¶çš„ï¼Œä¹Ÿå°±æ˜¯ä½ æ?¥ç”µè¯?çš„æ—¶å€™ï¼Œè¿™é‡Œrun()è¿˜æ˜¯è¿?è¡Œçš„ã€‚ä¸?è¿‡ä»–ä¸?ä¼špaint()ä»€ä¹ˆä¸œè¥¿ï¼Œå?³ä½¿å®ƒé‡Œé?¢æœ‰repaint()ï¼Œè¿™ç‚¹æ”¾å¿ƒã€‚</p>
<p> public void run(){<br />while(flag){//flagæ˜¯booleanåž‹å?˜é‡?<br />try{<br />&nbsp; Thread.sleep(50);//æ—¶é—´è‡ªå·±è®¾å•¦ã€‚<br />}catch(Exception e){}<br />repaint();<br />}<br />}<br />å“‡ï½žï½žæ?¥ç”µè¯?äº†ï¼Œæˆ–è€…ä½ é€€åˆ°ç³»ç»Ÿè?œå?•ã€‚å¦‚nokia s60çš„æ‰‹æœºã€‚<br />hideNotify()é¦–å…ˆä¼šè¢«è°ƒç”¨ï¼ŒæŽ¥ç?€pauseApp()å†?è¢«è°ƒç”¨ã€‚<br />è¿™ä¹ˆå¿«ï¼Œæ‰“å®Œäº†ï¼Œè¿”å›žæ—¶ï¼šå…ˆè°ƒç”¨showNotify()ï¼ŒæŽ¥ç?€è°ƒç”¨paint()å‡½æ•°ä¸€æ¬¡ï¼Œæœ€å?Žæ‰?æ˜¯è°ƒç”¨startApp()å‡½æ•°ã€‚<br />å…³äºŽrun()å’Œpaint()ä¹Ÿå?¯ä»¥ä½¿ç”¨display.callSerially(this)è¯­å?¥ã€‚è¿™ä¸ªä»¥å?Žæœ‰æ—¶é—´äº†å†?è¯´ã€‚<br />æ˜Žç™½äº†ç”Ÿå‘½å‘¨æœŸï¼Œå†?æ?¥çœ‹æ­»æœºé—®é¢˜ã€‚æˆ‘è¯´çš„æ­»æœºé—®é¢˜ï¼Œå¤šæ˜¯æ?¥ç”µè¯?è¿”å›žæ—¶æ­»æœºã€‚å…¶å®žå?ªè¦?æ‰¾åˆ°äº†é—®é¢˜ï¼Œä¸€åˆ‡å°±å?˜çš„å¾ˆç®€å?•ã€‚<br />ä¸ºä»€ä¹ˆæ­»æœºï¼Œå½’æ ¹ç»“åº•è¿˜æ˜¯ç¨‹åº?é—®é¢˜ã€‚å¥½åƒ?æ˜¯åºŸè¯?ã€‚å“ˆï½žï½ž<br />Graphics mg;//å®šä¹‰çš„å…¨å±€å?‚æ•°<br />paint(Graphics g){<br />mg = g;//æœ‰çš„ç¨‹åº?è¿™æ ·å†™ï¼Œif(mg ==null){mg =g:}è¿™æ ·å¯¹äºŽn7610ç³»åˆ—å°±ä¼šå‡ºé”™ã€‚<br />mg.drawString();<br />switch(case){<br />&nbsp;&nbsp; case GAME_MUNE:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drawA();<br />&nbsp;&nbsp; break;<br />&nbsp;&nbsp; case PLAY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drawB();<br />&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />}<br />}</p>
<p>/*ä¸‹é?¢çš„ç”»å›¾å‡½æ•°ä¸€å®šè¦?æ”¾åˆ°paint()å‡½æ•°é‡Œè°ƒç”¨ï¼Œä¸?è¦?åœ¨åˆ«çš„åœ°æ–¹è°ƒç”¨ï¼Œå¦‚run()é‡Œé?¢ï¼Œä¸Šé?¢è¯´è¿‡ï¼Œç¨‹åº?æš‚å?œä¹‹å?Žè¿”å›žï¼Œä¼šå…ˆpaintï¼ˆï¼‰ä¸€æ¬¡ï¼Œå¦‚æžœåœ¨åˆ«çš„åœ°æ–¹è°ƒç”¨å°±ä¼šå‡ºçŽ°é—®é¢˜ã€‚*/<br />public void drawA(){<br />mg.drawString();<br />}<br />public void drawB(){<br />mg.drawString();<br />}<br />æŒ‰ç…§ä¸Šé?¢çš„å†™æ³•ä¸€èˆ¬ä¸?ä¼šå‡ºçŽ°æ­»æœºé—®é¢˜ã€‚å½“ç„¶ï¼Œä½ ä¹Ÿå?¯ä»¥ä¸?å®šä¹‰å…¨å±€çš„mgï¼Œå?¯ä»¥æŠŠgå?•ç‹¬ä¼ åˆ°å?„ä¸ªç”»å›¾å­?å‡½æ•°ä¸­ã€‚å¦‚ï¼Œ<br />paint(Graphics g){<br />g.drawString();</p>
<p>switch(case){<br />&nbsp;&nbsp; case GAME_MUNE:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drawA(g);<br />&nbsp;&nbsp; break;<br />&nbsp;&nbsp; case PLAY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drawB(g);<br />&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />}<br />}<br />public void drawA(Graphics mg){<br />mg.drawString();<br />}<br />public void drawB(Graphics mg){<br />mg.drawString();<br />}</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yanwt.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yanwt.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yanwt.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yanwt.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yanwt.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yanwt.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yanwt.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yanwt.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yanwt.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yanwt.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yanwt.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yanwt.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yanwt.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yanwt.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yanwt.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yanwt.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yanwt.wordpress.com&amp;blog=15163&amp;post=4&amp;subd=yanwt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yanwt.wordpress.com/2005/11/03/midlet%e7%9a%84%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e7%9a%84%e6%b7%b1%e5%85%a5%e7%90%86%e8%a7%a3%e5%8f%8a%e6%b8%b8%e6%88%8f%e6%ad%bb%e6%9c%ba%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed49648f2f6bcd6605585706d2471cf8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yanwt</media:title>
		</media:content>
	</item>
	</channel>
</rss>
