Effective Java ѧϰ±Ê¼Ç£¨£±£©
ͨ³£Çé¿öÏ£¬ÎÒÃÇÔÚдһ¸öÀàʱ£¬Ò»°ã»á¸³ÓèËüÒ»¸ö»ò¼¸¸öpublicµÄ¹¹Ô캯Êý£¬ÈÃÍⲿ³ÌÐòÄܹ»´´½¨¶ÔÏó.¡¡È»¶ø£¬ÔÚeffective¡¡java ÖУ¬´ÓÁíÒ»¸ö½Ç¶È¸æ½ëÎÒÃÇÔÚʹÓÃpublicµÄ¹¹Ô캯Êýǰ£¬ÏÈ¿¼ÂÇÓÃpublic µÄ¾²Ì¬º¯ÊýÀ´´´½¨¶ÔÏó.¡¡
ÆäÓŵãÈçÏ£º
£±.¡¡Ò»¸ö¾²Ì¬µÄ¹¤³§º¯Êý£¬¿ÉÒÔÈ¡²»Í¬µÄÃû×Ö.¡¡¶ø¹¹Ô캯ÊýµÄÃû×ÖÖ»ÄÜÓëÀàͬÃû.¡¡
¡¡¡¡Ò»¸öAPIµÄÉè¼ÆÖУ¬Ò»¸öºÃ¶®µÄÃû×Ö¿ÉÒÔÃâȥʹÓÃÕßÔÚÎĵµÖвéÕÒÆäʹÓ÷½·¨µÄÂé·³.¡¡
¡¡¡¡¡¡È磺¡¡¼ÙÈçÓиöÀà½ÐHuman£¬¼ÙÈçËüÓиö¹¹Ô캯Êý¡¡Human£¨¡¡int sex) ,¸ù¾Ý²ÎÊýÀ´´´½¨²»Í¬µÄ¶ÔÏó.¡¡Óû§¾Í¿ÉÄÜÈ¥²éÎĵµ£¬sex=1 or sex=0 ·Ö±ð´ú±íʲô.¡¡µ«Èç¹ûÎÒÃǸøËü¼ÓÁ½¸ö¾²Ì¬µÄ¹¤³§º¯Êý£¬Human.getMan() ºÍ¡¡Human.getWoman() Óû§Ò»¿´Ãû×Ö¾ÍÖªµÀÊÇÔõôÓÃ.
¡¡¡¡¡¡ÁíÍ⣬ÕýÒòΪ¾²Ì¬¹¤³§º¯Êý¿ÉÒÔÈ¡²»Í¬µÄÃû×Ö£¬¿ÉÒÔÃâÈ¥¹¹Ô캯ÊýÏÞ¶¨²ÎÊýµÄ·³ÄÕ.
¡¡¡¡¡¡Àý×ÓͬÉÏ£¬ÈçÎÒÃÇÒªÓÐÒ»¸ö¸ù¾ÝÉí¸ßÀ´´´½¨Ò»¸öHuman¶ÔÏó£¬ÓÚÊÇÎÒÃÇдÓÐHuman(int height), ºóÀ´£¬ÎÒÃÇÓÖÏë¸ù¾ÝÄê¼ÍÀ´´´½¨Ò»¸ö¶ÔÏó£¬ÓÚÊÇÎÒÃÇÓÖÓÐHuman(int age), ºÜÃ÷ÏÔ£¬ÓÉÓÚº¯ÊýÇ©ÃûµÄÏÞÖÆ£¬ÎÒÃÇÖ»ÄÜÑ¡ÔñÆäÖÐÒ»¸ö¹¹Ô캯Êý.µ«Ê¹Óþ²Ì¬¹¤³§·½·¨¾ÍûÓÐÕâ¸ö·³ÄÕ.¡¡ÎÒÃÇ¿ÉÒÔÓÐHuman.getInstanceByHeight(int height) Ò²¿ÉÒÔÓÐ Human.getInstanceByAge(int age),ËûÃÇ¿ÉÒԺܺÏгµÄÔÚÒ»Æð¹¤×÷.
2. ʹÓþ²Ì¬¹¤³§º¯Êý,²»±ØÏñ¹¹Ô캯ÊýÄÇÑùÿ´Î¶¼´´½¨¶ÔÏó,¿ÉÒÔÔںܴó³Ì¶ÈÉϽÚÔ¼×ÊÔ´,ÌØ±ðÊÇÓÐЩÀà½öÓÐÓÐÏÞ¸öÊýµÄ¶ÔÏóʱ.
Èç ÎÒÃÇÓÐMonthÕâôһ¸öÀà, °´ÕÕÔÀ´µÄ·½·¨,ÎÒÃÇ¿ÉÄÜÓÐMonth(int mon), ÓÚÊÇ,ÿ´Îµ÷ÓÃÒ»¸ö¹¹Ô캯Êý,¾Í»á´´½¨Ò»¸öMonth¶ÔÏó,Æä½á¹ûÊÇÄÚ´æÖкܿÉÄÜ´æÔÚ´óÓÚ12¸öMonth¶ÔÏó. È»¶ø,¼ÙÈç,ÎÒÃÇÊÂÏȶ¨Òå12¸ö¾²Ì¬¶ÔÏó,´ÓJanµ½Dec,È»ºó¸øÒ»¸öMonth.getMonth(int mon)Õâôһ¸ö¾²Ì¬¹¤³§·½·¨, ÔÚº¯ÊýÖиù¾ÝÊý×Ö·µ»ØÆäÖÐÒ»¸ö¾²Ì¬¶ÔÏó,ÕâÑù,²»¹Ü³ÌÐòÔõôÔËÐÐ,ÄÚ´æÖÐʼÖÕÖ»ÓÐ12¸öMonth¶ÔÏó.
ÕâÑù×ö»¹ÓÐÒ»¸öºÃ´¦¾ÍÊÇ, Óû§¿ÉÒÔÖ±½ÓʹÓÃ== ±È½ÏÁ½¸ö¶ÔÏóÊÇ·ñÏàµÈ,¶ø²»ÓÃequal·½·¨.
3. Ò»¸ö¾²Ì¬¹¤³§º¯Êý£¬·µ»ØµÄ¶ÔÏó¿ÉÒÔÊÇÕâ¸öÀàµÄ¶ÔÏó£¬Ò²¿ÉÒÔÊÇÆä×ÓÀàµÄ¶ÔÏó£¬Ôö¼ÓÁËÉè¼ÆµÄÁé»îÐÔ¡£ÔÚʵ¼ÊÔËÓÃÖУ¬¿ÉÒԵõ½¼¸¸öºÃ´¦¡£
ÆäÒ»£¬¿ÉÒÔÒþ²ØÒ»Ð©À࣬¼õÉÙ¶ÔÍ⹫²¼µÄAPIÊý£¬¾«¼ò½Ó¿Ú¡£Õâ¾ä»°¿ÉÒÔÕâÑùÀí½â¡£±ÈÈçÉè¼ÆÒ»¸ö¿ò¼Ü£¬ÀïÃæ°üº¬ÓÐ20¸öÀ࣬µ«Êµ¼ÊÉÏ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýʹÓþ²Ì¬¹¤³§º¯ÊýÒþ²ØÒ»Ð©ÄÚ²¿ÊµÏÖ£¬Ê¹Óû§²»ÓÃÖªµÀÈ«²¿µÄÀ༰ʹÓ÷½·¨£¬Ê¹¿ò¼ÜÒ
Ïà¹ØÎĵµ£º
1, ±£Ö¤Ḭ̈߳²È«µÄÈýÖÖ·½·¨:
a, ²»Òª¿çÏ̷߳ÃÎʹ²Ïí±äÁ¿
b, ʹ¹²Ïí±äÁ¿ÊÇfinalÀàÐ͵Ä
c, ½«¹²Ïí±äÁ¿µÄ²Ù×÷¼ÓÉÏͬ²½
2, Ò»¿ªÊ¼¾Í½«ÀàÉè¼Æ³ÉḬ̈߳²È«µÄ, ±ÈÔÚºóÆÚÖØÐÂÐÞ¸´Ëü,¸üÈÝÒ×.
3, ±àд¶àÏ̳߳ÌÐò, Ê×Ïȱ£Ö¤Ë ......
A:
Éè¼ÆÄ£Ê½Ö®Factory(¼òµ¥¹¤³§Ä£Ê½¡¢¹¤³§·½·¨ºÍ³éÏ󹤳§)
Á˽ⷴÉ䣺
Class.forName().newInstance();
1.¼òµ¥¹¤³§·½·¨
½ÇÉ«£º
¾ßÌ幤³§
³éÏó²úÆ·
¾ßÌå²úÆ·
±ÈÓ÷£º
Ò»¸ö²úÒµ½á¹¹µ¥Ò»£¬Ö»×¨ÃÅÒ»¸ö²úÆ·ÁìÓòµÄС¹¤³§£¬ÈçÈí¼þ¡£
2¹¤³§·½·¨
½ÇÉ«£º
³éÏ󹤳§£º²»×ö¾ßÌåµÄ¹¤×÷£¬Íê³ÉÉú²ú²úÆ·Ëù±ØÐë ......
Èç¹û×Ô¼ºµÄjava projectÖÐÐèÒªÒýÓöîÍâµÄjar°ü×÷Ϊ×ÊÔ´Îļþ£¬ÄÇôÐèÒª×Ô¶¨ÒåÅäÖÃÎļþMANIFEST.MF ,ÀýÈ磺
Manifest-Version: 1.0
Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jar lib\log4j-1.2.13.jar lib\mysql-connector-java-3.1.13-bin.jar
Main-Class: src.YourMainClassName
ÆäÖеÄClass-Path¾ÍÖ¸¶¨ÁËÍ ......
×¢£ºwait notify ¶¼ÊÇObjectµÄ·½·¨
ͬ²½£¨×èÈû£© £ºÊÇÒ»ÖÖ·ÀÖ¹¶Ô¹²Ïí×ÊÔ´·ÃÎʵ¼ÖµÄÊý¾Ý²»Ò»ÖµÄÒ»ÖÖģʽ¡£
ÏêϸÇë²Î¿´²Ù×÷ϵͳ¡£
ÔÚJavaÖУ¬ÓÉÓÚ¶Ô¶àÏ̵߳ÄÖ§³Ö£¬¶Ôͬ²½µÄ¿ØÖÆÖ÷Ҫͨ¹ýÒÔϼ¸¸ö·½·¨£¬synchronized£¬ºÍwait(),notify()ºÍnotifyAll(),ÏÂÃæ½øÐÐÒ»Ò»µÄ½²½â£º
A¹Ø¼ü×Ösynchronized
ÿ¸öjava¶Ô ......
ÖÚËùÖÜÖª£¬ÔÚ³ÌÐò¿ª·¢ÖУ¬ÄÑÃâ»áÓöµ½ÐèҪƥÅä¡¢²éÕÒ¡¢Ìæ»»¡¢ÅжÏ×Ö·û´®µÄÇé¿ö·¢Éú£¬¶øÕâЩÇé¿öÓÐʱÓֱȽϸ´ÔÓ£¬Èç¹ûÓô¿±àÂ뷽ʽ½â¾ö£¬ÍùÍù»áÀ˷ѳÌÐòÔ±µÄʱ¼ä¼°¾«Á¦¡£Òò´Ë£¬Ñ§Ï°¼°Ê¹ÓÃÕýÔò±í´ïʽ£¬±ã³ÉÁ˽â¾öÕâһì¶ÜµÄÖ÷ÒªÊֶΡ£
´ó¼Ò¶¼ÖªµÀ£¬ÕýÔò±í´ïʽÊÇÒ»ÖÖ¿ÉÒÔÓÃÓÚģʽƥÅäºÍÌæ»»µÄ¹æ·¶£¬Ò»¸öÕýÔò±í´ïʽ¾ÍÊÇÓÉ ......