Effective Java ѧϰ±Ê¼Ç£¨3£©
ÔÚʵÏÖsingletonģʽʱ£¬ÎÒÃÇÓÐÒÔϼ¸ÖÖ·½·¨¡£
1. public static final ×ֶμÓÉÏprivate µÄ¹¹Ô캯Êý¡£
public class Singleton{
public static final Singleton INSTANCE = new Singleton();
private Singleton() { ... }
}
ÕâÖÖ·½·¨¼òµ¥£¬ÆäÖеÄ×Ö¶ÎÈÃÈËһĿÁËÈ»¾ÍÖªµÀÕâ¸öÀàÊÇSingletonģʽ£¬ÓÃfinal¹Ø¼ü×ÖÈ·±£Õâ¸ö±äÁ¿ÔÚ³õʼ»¯ºó¾Í²»»áÔÙ±»¸ü¸Ä£¬µ«Òª×¢ÒâµÄÊÇСÐÄ·ÀÖ¹ÉÙÊý±ðÓÐÓÃÐĵijÌÐòʹÓÃAccessibleObject.setAccessibleÀ´·ÃÎÊ˽Óй¹Ô캯Êý£¬Õâʱ¿ÉÒÔÔÚ˽Óй¹Ô캯ÊýÖÐÅжϵ±´´½¨µÚ¶þ¸öʵÀýµÄʱºòÅ׳öÒ»¸öÒì³£¡£
2. private static final ×ֶμÓÉÏprivate µÄ¹¹Ô캯ÊýÔÙ¼ÓÉÏpublic ¾²Ì¬¹¤³§º¯Êý
public class Singleton{
private static final Singleton INSTANCE = new Singleton();
private Singleton() { ... }
public static Singleton getInstance{}{return INSTANCE;}
}
ÕâÖÖ·½Ê½²»Óõ£ÐÄÐÔÄÜÎÊÌ⣬ÒòΪÏÖÔÚµÄJVM»á°Ñ¾ø´ó¶àÊýµÄ¾²Ì¬¹¤³§º¯Êý¸ÄΪÄÚÁª¡£´ËÍ⣬ÕâÖÖ·½·¨»¹¿ÉÒÔÔÚ²»¸Ä±äAPIµÄÇé¿ö϶Էµ»ØÖµ½øÐиı䣬¼´ÔÚÒÔºó¸ù¾ÝÐèÒªÊÇ·ñ·µ»ØµÚ¶þ¸öʵÀý£¬»òÊÇÿ¸öÏß³ÌÒ»¸öʵÀý¡£
¶ÔÓÚÒÔÉÏÁ½ÖÖ·½·¨ÔÚ´®Ðл¯µÄʱºòҪעÒ⣬²»Äܽö½öÖ»¼ÓÉÏimplements Serializable½Ó¿Ú£¬ÕâÑù»áµ¼ÖÂÿ´Î·´ÐòÁл¯µÄʱºò´´½¨Ò»¸öжÔÏó£¬ÕâÑù¾Í²»ÊÇÕæÕýµÄsingletonÁË£¬½â¾öÕâ¸öÎÊÌâµÄ·½·¨ÊÇÔÚÉùÃ÷µÄʱºò¶Ôÿһ¸öfinal×ֶμÓÉÏtransient¹Ø¼ü×Ö£¬È»ºóÔÙʵÏÖÒ»¸öreadResolve·½·¨¡£
private Object readResolve() {
return INSTANCE;
}
¶ÔÓÚjava 1.5ºóµÄ°æ±¾£¬ÊµÏÖsingletonģʽ×îºÃµÄ·½·¨ÊÇÓÃö¾Ù¡£
public enum Singleton {
INSTANCE;
}
ÕâÖÖ·½·¨Ã»ÓÐÉÏÃæËµµÄȱµã£¬ÊÇ×îÓŵķ½·¨¡£
±¾ÎÄÀ´×ÔCSDN²©¿Í£¬×ªÔØÇë±êÃ÷³ö´¦£ºhttp://blog.csdn.net/mutsinghua/archive/2010/01/16/5199124.aspx
Ïà¹ØÎĵµ£º
Beanshell ¡¾Java¿ªÔ´ ¶¯Ì¬ÓïÑÔ¡¿
BeanshellÊÇÓÃJavaд³ÉµÄ£¬Ò»¸öСÐ͵ġ¢Ãâ·ÑµÄ¡¢¿ÉÒÔÏÂÔØµÄ¡¢Ç¶ÈëʽµÄJavaÔ´´úÂë½âÊÍÆ÷£¬¾ßÓжÔÏó½Å±¾ÓïÑÔÌØÐÔ¡£BeanShellÖ´Ðбê×¼JavaÓï¾äºÍ±í´ïʽ£¬ÁíÍâ°üÀ¨Ò»Ð©½Å±¾ÃüÁîºÍÓï·¨¡£Ëü½«½Å±¾»¯¶ÔÏó¿´×÷¼òµ¥±Õ°ü·½·¨£¨simple method closure£©À´Ö§³Ö£¬¾ÍÈçͬÔÚPerlºÍJavaScri ......
ÔÚ±àдһ¸öÀàʱ£¬Èç¹û¸ÃÀàÖеĴúÂë¿ÉÄÜÔËÐÐÓÚ¶àÏ̻߳·¾³Ï£¬ÄÇô¾ÍÒª¿¼ÂÇͬ²½µÄÎÊÌâ¡£ÔÚJavaÖÐÄÚÖÃÁËÓïÑÔ¼¶µÄͬ²½ÔÓsynchronized£¬ÕâÒ²´ó´ó¼ò»¯ÁËJavaÖжàÏß³Ìͬ²½µÄʹÓá£
ÎÒÃÇÊ×Ïȱàдһ¸ö·Ç³£¼òµ¥µÄ¶àÏ̵߳ijÌÐò£¬ÊÇÄ£ÄâÒøÐÐÖеĶà¸öÏß³Ìͬʱ¶Ôͬһ¸ö´¢ÐîÕË»§½øÐдæ¿î¡¢È¡¿î²Ù×÷µÄ¡£
¡¡¡¡ÔÚ³ÌÐòÖÐÎÒÃÇÊ¹Ó ......
¹¤×÷̨´°¿ÚµÄEditorÇøÓòĬÈÏÊÇÏÔʾµÄ£¬¶øÇÒËüÖ§³ÖÍÏ×§²Ù×÷¡£ÔÚEclipseÀïÃæ£¬°ÑÒ»¸öÎļþÍϵ½EditorÇøÓò£¬¾Í»á×Ô¶¯´ò¿ª¸ÃÎļþµÄ
Editor.¸ÃÌØÐÔÊÇÔÚIWorkbenchWindowConfigurer ÖÐÉèÖá£
ÔÚPassWord GateÖУ¬µ±Í϶¯Password Gate ViewÖеÄÒ»¸öGroup »òÕß
Serviceµ½EditorÇøÓò£¬»áÔÚEditorÏÔʾ¸Ã ......
1¡¢Óï·¨£º±ØÐë±È½ÏÊìϤ£¬ÔÚд´úÂëµÄʱºòIDEµÄ±à¼Æ÷¶ÔijһÐб¨´íÓ¦¸ÃÄܹ»¸ù¾Ý±¨´íÐÅÏ¢ÖªµÀÊÇʲôÑùµÄÓï·¨´íÎó²¢ÇÒÖªµÀÈκÎÐÞÕý¡£
2¡¢ÃüÁ±ØÐëÊìϤJDK´øµÄһЩ³£ÓÃÃüÁî¼°Æä³£ÓÃÑ¡ÏÃüÁîÖÁÉÙÐèÒªÊìϤ£ºappletviewer¡¢
HtmlConverter¡¢jar¡¢
java¡¢javac¡¢javadoc¡¢javap¡¢javaw¡¢native2ascii¡¢serialver£¬Èç¹ûÕâЩÃü ......
ͨ³£,ÓÐÒ»ÀàÎÊÌâµÄ²úÉú¶¼ÊÇÓÉÓÚûÓÐÖØÔØhashCodeÕâ¸ö·½·¨. µ±ÄãÖØÔØequalsºó,hashCode±ØÐëÖØÔØ,·ñÔòÔÚʹÓÃHashMap, HashSet, HashtableµÄʱºò,»á³ö´í.
¶ÔÓÚhashCodeÓм¸¸öÔÔò.
1. ²»¹Üʲôʱºòµ÷ÓÃhashCode,Èç¹ûͬһ¸ö¶ÔÏóÓëhashCodeÏà¹ØµÄ×Ö¶ÎûÓÐÐ޸ĵϰ,Õâ¸ö·½·¨µÄ·µ»ØÖµ±ØÐëÏàͬ. µ«²»±ØºÍÁíÒ»¸öÓ¦ÓóÌÐòÖеÄÖµÏàµÈ ......