My FAQ,×îÐÂ×îÈ«µÄIT¼¼ÊõFAQ
×îÐÂ100ƪ | ÍÆ¼ö100ƪ | רÌâ100ƪ | ÅÅÐаñ | ËÑË÷ | ÔÚÏßAPIÎĵµ
Ê× Ò³ | ³ÌÐò¿ª·¢ | ²Ù×÷ϵͳ | Èí¼þÓ¦Óà| Í¼ÐÎͼÏó | ÍøÂçÓ¦Óà| ¾«ÎÄÜöÝÍ | ½ÌÓýÈÏÖ¤ | Î´ÕûÀíÆª | ¼¼ÊõÌÖÂÛ
  µ±Ç°Î»Öãº> Bea×¨Çø > BEA JRockit
ʵսJDK 5
×÷Õß:ØýÃû ʱ¼ä:2005-09-20 10:08 ³ö´¦:»¥Á¬Íø Ôð±à:Ð¡Óæ
              ÕªÒª£ºÎÒ´ÓÊÂJDK 5.0´úÂëµÄ±àд¹¤×÷ÒѾ­ÓÐÁù¸öÔÂÖ®¾ÃÁË£¬ÎÒÈÏΪÓбØÒª»¨Ò»µãʱ¼ä»Ø¹ËÒ»ÏÂÎҵıàÂë¾­Ñ飬¶Ô¸ÃÈí¼þËù½éÉܵŦÄܽøÐÐ×ܽᡣ
ÎÒ´ÓÊÂJDK 5.0´úÂëµÄ±àд¹¤×÷ÒѾ­ÓÐÁù¸öÔÂÖ®¾ÃÁË£¬ÎÒÈÏΪÓбØÒª»¨Ò»µãʱ¼ä»Ø¹ËÒ»ÏÂÎҵıàÂë¾­Ñ飬¶Ô¸ÃÈí¼þËù½éÉܵŦÄܽøÐÐ×ܽᡣ

ÔöÇ¿µÄforÑ­»·

¡¡¡¡×÷ΪÎÞ¿ÉÕùÒéµÄÙø¼Ò£¬ÐµÄforÑ­»·ÎÞÂÛÔں䦣¨¼¸ºõÔÚÈκεط½£©¶¼·Ç³£ºÃÓã¬Òò´ËÎÒ¼¤¶¯µÃ²»ÖªÈçºÎ¿ªÊ¼ÃèÊö¡£µ±ÎÒ±»ÆÈʹÓþÉʽforÑ­»·µÄʱºò£¬ÌرðÊÇÐèҪʹÓÃË÷Òý»òÐèÒªÈõü´ú³ÌÐòÔÚÑ­»·Ö®Íâ¿É¼ûµÄʱºò£¬ÎÒµÄÄÚÐÄÉî´¦ÂÅÂÅηËõ¡£

¡¡¡¡´úÂë¾ßÓкܺõĿɶÁÐÔ£¬²¢ÇÒ¸øÈ˵ĸоõÒ»µãÒ²²»·±ÔÓ£¨ÀýÈ磬Ë÷Òý²»ÐèÒªµÄ´úÂë»òÔöÁ¿¹«¿ª»ù´¡ÊµÏÖ£©¡£ºóÃæÒ»µãÊÇÐÂÑ­»·µÄÒâÍâÊÕ»ñ¡£ÊÔÏëһϣ¬ÓÐÈçÏ´úÂ룺

String[] names = ...;
for (String name :names) {
// ...
}
¡¡¡¡Äú¾ö¶¨°ÑÃû³ÆÀàÐ͸ÄΪCollection¡£ÈçºÎÐ޸ĴúÂ룿
List names = ...;
for (String name : names) {
// ...
}

¡¡¡¡½öÐÞ¸ÄÒ»ÐоͿÉÒÔÁË¡£Õâ¾ÍÊÇËüµÄ¶ÀÌØÓŵ㡣

×¢ÊÍ

¡¡¡¡ÏÔÈ»£¬ÎÒ¶Ô×¢Ê͵ÄÁ˽⻹¾ßÓÐÒ»¶¨¾ÖÏÞÐÔ£¬ÒòΪËüÃÇλÓÚTestNGµÄºËÐÄλÖ㻵«ÊÇ£¬ÎÒ¼áÐÅ×¢ÊÍÐн«¸Ä±äÎÒÃÇʹÓÃJava¹¹½¨Èí¼þµÄ·½Ê½¡£³¤ÆÚÒÔÀ´£¬ÎÒÃÇÔÚ³ÌÐòÖÐÒýÈëÔªÊý¾ÝÒ»Ö±ÒÀ¿¿µÄÊǶԺڿÍ×ö³öµÄ·´Ó¦£¬×¢ÊÍ×îÖÕ½«¶Ô´ËÎÊÌâÌṩ׿ԽµÄ½â¾ö·½°¸¡£

¡¡¡¡´ËÍ⣬ÎÒÓÐÒ»¸ö¸Ð¾õ£¬¾ÍÊÇʹÓÃijЩԤ¶¨ÒåµÄ×¢ÊÍ£¨Èç@Override£©ÊÇûÓбØÒªµÄ£¬ËùÒÔÔÚÕâÒ»µãÉÏÎÒһֱûÓÐÐγÉ×Ô¼ºµÄÒâ¼û¡£

¡¡¡¡ÔÚδÀ´µÄÈô¸ÉÄêÀ¶ÔÎÒÀ´ËµÒ»¸öÎÞ·¨ÌӱܵÄÏÖʵÊÇ£¬ÎÒÃÇÔĶÁºÍ±àдµÄ´ó¶àÊýJava´úÂë¶¼½«°üº¬×¢ÊÍ¡£

¾²Ì¬µ¼Èë

¡¡¡¡³ýÁËÔÚRetention ºÍ TargetÀàÐÍÖУ¬ÎÒ¼¸ºõ²»Ê¹ÓÃËüÃÇ¡£ÖÁ½ñ»¹Ã»ÓÐÈËÄÜ˵·þÎÒ£¬Ìí¼Ó´Ë¹¦Äܵı¾À´Òâͼ£¨×èֹʵÏֽӿڵķ´Ä£Ê½£¬ÇÒÎÞÐèÏÞ¶¨¾ÍÄÜÖØÓÃÆä³£Á¿£©Ö¤Ã÷Ó¦¸ÃÒýÈëеÄÓïÑÔ¹¦ÄÜ£¬ÕâÒªÈÃʱ¼ä˵»°¡£

¡¡¡¡ÎÒ²ÂÏ룬´ÓijЩ·½ÃæÀ´Ëµ£¬ÔÚÎÒÈÕ³£±à³ÌÖÐʹÓõÄIDEÍêÈ«·ÏÆúÁ˵¼È빦ÄÜ£¬ËùÒÔÎÒ¶ÔÕâÒ»¹¦ÄÜÒѾ­Ã»ÓÐʲô¸Ð¾õÁË¡£

¿É±ä³¤¶È²ÎÊý

¡¡¡¡Æù½ñΪֹ£¬ÎÒ´ÓÀ´²»ÐèÒª´Ë¹¦ÄÜ¡£ÓÐʱËü¿ÉÄÜÓÃÆðÀ´ºÜ·½±ã£¬µ«ÊÇÎÒÕæµÄ²»ÏàÐÅÕâÖÖ¹¦ÄÜÈ·±£ÓïÑÔÖеĸıäÊÇÕýÈ·µÄ¡£

Enum

¡¡¡¡ÀíÂÛÉÏ£¬ÎÒ¶ÔEnum³Ö¿Ï¶¨µÄ̬¶È£¬µ«ÊÇÎÒ»¹Ã»ÓÐÕæÕý°ÑÎҵĴúÂëת»»ÎªEnum£¬ËùÒÔÎÒ²»Á˽âËüÃǵÄʹÓÃЧ¹û¡£ÎÒÏàÐÅÈç¹ûʹÓÃËüÃÇЧ¹û»áºÜºÃ£¬½«Ê¹´úÂë¸ü¼Ó½¡×³¡£

Generic

¡¡¡¡°Ñ×îºÃµÄÁôµ½×îºó……µ«ÊÇÒòΪ±¾ÌõÄ¿Óе㳤£¬ÎÒ½«°Ñ¶ÔGenericµÄÌÖÂÛÁô×÷Ã÷ÌìµÄ»°Ìâ¡£

Autoboxing

¡¡¡¡µ½Ä¿Ç°ÎªÖ¹£¬ÎÒ»¹´ÓÀ´Ã»ÓÐʹÓùýautoboxing¹¦ÄÜ£¬ÒòΪÎÒ¶ÔÓÚ´úÂëÐÔÄÜʧȥ¿ØÖÆÃ»ÓÐÃ÷È·µÄ¸Ð¾õ¡£¾¡¹ÜautoboxingÊÇÒ»ÖÖδ¾­Ö¤Ã÷µÄ¹¦ÄÜ£¬ËüÓÃÆðÀ´·½±ã£¬²¢ÇÒ¿ÉÒÔÈôúÂë¸ü¾ßÓпɶÁÐÔ¡£ÎÒÏëÎÒÓ¦¸Ã¹ÄÀø¿ª·¢ÈËÔ±ÔÚʹÓÃautoboxingʱΪ´úÂë×öÉϱê¼Ç£»ÎҸҿ϶¨IDEµÄ¿ª·¢ÈËÔ±²»¾ÃÒ²»áÕâÑù×ö¡£

Generic

¡¡ËµÔÚÇ°ÃæµÄ»°¡£

¡¡¡¡Ê×ÏÈ£¬ÎÞ¿ÉÖÃÒÉ£¬GenericÊÇÒ»¸ö¿ÉÄÜʹ´úÂë¸ü¼Ó½¡×³µÄ¿É¿¿¸ÅÄî¡£ÒòΪËü¾ßÓпÉÖ´ÐÐÐÔ£¬ËùÒÔͨ³£Å׿ª¾ßÌåÓïÑÔ¶ÔÆä½øÐÐÌÖÂÛ¡£¶àÄêÀ´×÷ΪC++ίԱ»áµÄ³ÉÔ±£¬ÎÒÇå³þµØ¸Ð¾õµ½ÕýȷʹÓÃËüÃǾö·ÇÒ×Ê¡£

¡¡¡¡¼òÑÔÖ®£¬¶ÔJava genericsÎÒÓÃÏÂÃæµÄ»°À´½øÐÐ˵Ã÷£º´úÂë±ÈÒÔǰ½¡×³£¬µ«¸ü¼ÓÄÑÒÔÔĶÁ¡£

¡¡¡¡ÄÇô£¬ÎÊÌâºÎÔÚ£¿

¡¡¡¡ÈßÓà¡£

¡¡¡¡Ê×ÏÈ£¬°ÑÒ»°ãµÄÇ¿ÖÆ×ª»»ÐèÇóÒýÈëÈßÓ࣬¶Ô´ËÎÊÌâÎҸоõºÜ¼¬ÊÖ¡£ÀýÈ磬Ϊʲô²»Äܲ»±àд£º

Map accounts = new HashMap();  // no generics
...
Account a = (Account) accounts.get("Cedric");
¡¡¡¡¶ø±àд£º
Map m = new HashMap();  // no generics
...
Account a = m.get("Cedric");

¡¡¡¡À´´úÌæ£¬Í¬Ê±ÈñàÒëÆ÷ÒýÈëÒ»ÖÖ¾²Ä¬Ç¿ÖÆ×ª»»Ä£Ê½£¿ÒòΪºÜÏÔÈ»£¬ËüÊÇÒ»¸öÎÒÊÔͼ´ÓMapÖмìË÷µÄAccountÀàÐ͵ĶÔÏó¡£


¡¡¡¡ÏÔÈ»£¬Generic²»ÄÜÍêÈ«½â¾öÕâ¸öÎÊÌ⣬ֻÊÇÔÚÒ»¶¨³Ì¶ÈÉÏÓаïÖú¶øÒÑ¡£¿ÉÊÇ£¬ÔÚÁíÍâһЩ·½Ã棬ËüÃÇÈ´Óк¦ÎÞÒæ£º

Map<String, List<Account>> accounts =
new HashMap<String, List<Account>>();

¡¡¡¡àË£¡
¡¡¡¡¸Ã´úÂë²»½öÄÑÒÔÔĶÁ£¬¶øÇÒ»¹Î´ÄÜ×ñÊØDRY£¨Don't repeat yourself£©×¼Ôò¡£Èç¹ûÎÒÐèÒªÔÚÁбí<Account> Collection<Account>Öиü¸Ä´ËÓ³ÉäµÄÖµÀàÐÍ£¬½«»á·¢ÉúʲôÊ£¿ÎÒÐèÒªÌæ»»´úÂëÖеÄËùÓеĴËÀàÉùÃ÷¡£¾¡¹ÜIDEÖØ¹¹¶Ô´ËÓÐËù°ïÖú£¬ÈÔÈ»ÐèÒª¶ÔÏ൱¶àµÄ´úÂë½øÐÐÐ޸쬴ËÀàÐÞ¸ÄÉõÖÁÓпÉÄܶԴúÂëµÄÓïÒå²úÉúÒ»¶¨Ó°Ïì¡£

¡¡¡¡ÊÂʵÉÏ£¬´´½¨Ð¶ÔÏóʱûÓÐʲôºÃ°ì·¨¿ÉÒÔ±ÜÃâ¸ÃÓï·¨£¬µ«ÊÇÎÒҪ˵µÄÊÇ£¬Èç¹û½«typedefºÍGenericÒ»ÆðÒýÈ룬Çé¿ö»áºÃµÄ¶à¡£

¡¡¡¡ÎÒ×î³õÊÇÕâÖֹ۵㡣

¡¡¡¡µ«ÊÇ£¬Ëæ×ÅÈÏʶµÄ¼ÓÉÎÒ·¢ÏÖʹÓÃtypedef½â¾öÎÊÌâÊÇÒ»¸ö´íÎóµÄ½â¾ö·½°¸£¬ÒòΪ¿¿¼òµ¥Ìí¼ÓµÄ·½Ê½¶ÔʹÓõ¥¶ÀÀඨÒ帴ÔÓGenericÀàÐÍûÓÐÈκÎ×÷Óá£

class AccountMap extends HashMap<String, List&lAccount>> {
...
}

¡¡¡¡³ýÈ¥À©Õ¹ÊµÏÖ£¨ºÜÏÔÈ»ÊÇHashMap¶ø²»ÊÇMap£©ÕâÖÖÇé¿ö£¬¸Ã½â¾ö·½°¸¿ÉÄܱÈÒýÈëtypedefºÃһЩ£¬ÒòΪtypedefÓÐÆä×ÔÉíµÄȱÏÝ¡£

¡¡¡¡Æù½ñÎÒ»¹Ã»ÓÐÓöµ½ÕâÖÖÂé·³£¬µ«ÎҵĽ¨ÒéÊÇ£ºÈç¹û±àд¸ÃÀàÐÍÈý´Î£¨³õʼ»¯Á½´Î£¬ÔÚ´úÂëÖÐʹÓÃÒ»´ÎÒÔÉÏ£©ÒÔÉÏ£¬ÔòʹÓÃËü¡£

¡¡¡¡³ý´ËȱµãÍ⣬×ÜÌåÀ´ËµÎÒ»¹ÊÇÏ൱ϲ»¶GenericsµÄ£¬¶øÇÒÓÈÆäϲ»¶ÔĶÁ±àдµÄ·Ç³£ºÃµÄTestNG Javadocs¡£

½áÊøÓï

¡¡¡¡¶ÔÓÚJDK 5.0µÄÐÂÌØÐÔÎҷdz£ÂúÒâ¡£ÎÒÓÐÐÒ²ÎÓëÁËJSR 175ºÍJSR 201£¬´Ó¶øÓлú»á¶Ô¿ª·¢JDK 5.0µÄÐÂÌØÐÔ×÷³öÁË×Ô¼ºµÄ¹±Ïס£Í¬ËùÓиù±¾ÐԵıä¸ïÒ»Ñù£¬²»ÊÇËùÓеÄÐÂÌØÐÔ¶¼Êܵ½´ó¼ÒµÄ»¶Ó­£¬µ«Ëæ×Å´ó¶àÊý¿ª·¢ÈËÔ±·¢ÏÖÆäÖÐÄ³Ð©ÌØÐԷdz£ÓÐÓ㬲¢ÇÒ»¹±£ÁôÁËÏòºó¼æÈÝÐÔ£¬ÎÒÈÏΪJDK 5.0Ïò¿ª·¢¸ü¶à½¡×³µÄJava´úÂëÂõ³öÁ˼ᶨµÄÒ»²½¡£¡¡

¹ØÓÚ×÷Õß

Cedric BeustµÄµç×ÓÓÊÏ䣺cedric@beust.com
²©¿Í£ºhttp://www.beust.com/weblog/

¡¡¡¡Cedric BeustÊÇWebLogic ServerÍŶӵĸ߼¶Èí¼þ¿ª·¢ÈËÔ±£¬ËûÔÚÆä²©¿ÍOtakuÖÐÌá³öÁËJ2EE¡¢Java¡¢AOPºÍÈí¼þ¿ª·¢µÈ·½ÃæµÄ¼û½â¡£

 
Ê×Ò³ | Ͷ×ÊÓëºÏ×÷ | ·þÎñÌõ¿î | Òþ˽Õþ²ß | Êղر¾Õ¾ | ÉèΪÊ×Ò³ | ÐÂÓû§×¢²á | ÃâÔðÉùÃ÷ | ʹÓðïÖú
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn °æÈ¨ËùÓÐ