ÎÒʹÓÃJava
8±àÂëÒѾÓÐЩÄêÍ·£¬¼ÈÓÃÓÚеÄÓ¦ÓóÌÐò£¬Ò²ÓÃÀ´Ç¨ÒÆÏÖÓеÄÓ¦Ó㬸оõÊÇʱºòдһЩÎÒ·¢Ïֵķdz£ÓÐÓõġ°×î¼Ñʵ¼ù¡±¡£ÎÒ¸öÈ˲¢²»Ï²»¶¡°×î¼Ñʵ¼ù¡±Õâ¸ö˵·¨£¬ÒòΪËüÒâζ×Å¡°Ò»µ¶ÇС±µÄ½â¾ö·½°¸£¬¶ø±àÂë²»¿ÉÄÜÊÇÕâÑùµÄ¹¤×÷·½Ê½¡ª¡ªÎÒÃÇÐèÒªÇ××ÔÈ¥·¢ÏÖʲôÑùµÄ½â¾ö·½°¸²ÅÊÇÓÐЧµÄ¡£µ«ÊÇÎÒ·¢ÏÖÁËһЩJava
8´úÂëÖпÉÒÔ°ïÖúÎÒÃǵÄһЩѡÔñ£¬ÈÃÎÒÃÇÒ»ÆðÀ´¿´¿´°É¡£
1.Optional
OptionalÊÇÒ»¸öÑÏÖØ±»µÍ¹ÀµÄ¹¦ÄÜ£¬²¢ÇÒÓÐDZÁ¦É¾³ýºÜ¶àÀ§ÈÅÎÒÃǵÄNullPointerExceptions¡£ÕâÔÚ´úÂë±ß½çÖУ¨ÒªÃ´ÊÇÕýÔÚʹÓõÄAPI£¬ÒªÃ´ÊÇÕýÔÚ±©Â¶µÄAPI£©ÌرðÓÐÓã¬ÒòΪËüÔÊÐíÄãºÍÄãµÄµ÷ÓôúÂëÀ´ÍÆÀíËùÆÚ´ýµÄ¶«Î÷¡£
È»¶ø£¬²»¼Ó˼¿¼ºÍÉè¼Æ¾ÍÓ¦ÓÃOptional¿ÉÄܻᵼÖÂÓ°Ïì´óÁ¿µÄÀ࣬²¢¿ÉÄܵ¼Ö¿ɶÁÐÔ¸ü²î¡£ÏÂÃæÊÇһЩ¹ØÓÚÈçºÎ¸ßЧʹÓÃOptionalµÄ¼¼ÇÉ¡£
OptionalÓ¦¸ÃÖ»ÓÃÓÚ·µ»ØÀàÐÍ
¡¡²»ÊDzÎÊý£¬Ò²²»ÊÇ×ֶΡ£ÐÒÔ˵ÄÊÇ£¬IntelliJ IDEAµÄÈÃÄã´ò¿ª¼ì²éÀ´²é¿´ÊÇÊÇ·ñ×ñÑÕâЩ½¨Òé¡£

OptionalÖµÓ¦ÔÚÓöµ½ËüÃǵĵط½Öд¦Àí¡£IntelliJ IDEAµÄ½¨Òé»á·ÀÖ¹´úÂëOptionalй©£¬ËùÒÔÇë¼ÇµÃÔÚÄã·¢ÏÖOptionalµÄµØ·½´¦ÀíËü£¬Ñ¸ËÙ²ÉÈ¡Ðж¯¡£

²»Ó¦¸Ã¼òµ¥µ÷ÓÃget()
OptionalµÄ¹¦ÄÜÊDZí´ïÕâ¸öÖµ¿ÉÄÜÊǿյ쬲¢ÈÃÄãÓ¦¶ÔÕâÖÖÇé¿ö¡£Òò´Ë£¬ÔÚ¶ÔËü×öÈκÎÊÂÇé֮ǰһ¶¨Òª¼ì²éÊÇ·ñÓÐÒ»¸öÖµ¡£Ö»ÊǼòµ¥µÃµ÷ÓÃget()¶ø²»Ïȼì²éisPresent()ÔÚijЩʱºò¿ÉÄܻᵼÖ¿ÕÖ¸Õë¡£ÐÒÔ˵ÄÊÇ£¬IntelliJ
IDEAÒ²Óмì²é¿ÉÒÔÌáÐÑÄãÕâÒ»µã¡£

¿ÉÄÜÓиüÓÅÑŵķ½Ê½
½áºÏÁËget()µÄisPresent()µ±È»»áºÜÔÞ¡

¡¡µ«Ò²ÓиüÓÅÑŵĽâ¾ö·½°¸¡£Äã¿ÉÒÔʹÓÃorElseÔÚÍòÒ»ÊÇ¿ÕÖµµÄÇé¿öϸøÒ»¸öÌæ´ú·½°¸¡£

¡¡»òÕßÄã¿ÉÒÔʹÓÃorElseGet˵Ã÷ÔÚֵΪ¿ÕµÄÇé¿öϵ÷ÓÃÄĸö·½·¨¡£ÕâËÆºõÓëÉÏÃæµÄÀý×ÓÏàͬ£¬µ«supplier·½·¨½«Ö»ÔÚÐèÒªµÄʱºòµ÷Óã¬Òò´Ë£¬Èç¹ûÕâÊÇÒ»ÖÖ°º¹óµÄ·½·¨£¬ÄÇôʹÓÃlambda»áÓиü¼ÑÐÔÄÜ¡£
2.ʹÓÃLambda±í´ïʽ
Lambda±í´ïʽÊÇJava 8µÄÖ÷ÒªÌØµãÖ®Ò»¡£¼´Ê¹Ä㻹ûÓÐʹÓÃJava 8£¬ÄãÏÖÔÚ¿ÉÄÜÒѾ¶ÔËüÃÇÓÐÁË»ù±¾µÄÁ˽⡣ËüÃÇÊÇÓÃJava±à³ÌµÄÒ»ÖÖеķ½Ê½£¬²¢ÇÒʲôÊÇ¡°×î¼Ñʵ¼ù¡±»¹²»Ã÷ÏÔ¡£ÏÂÃæÊÇÎÒϲ»¶×ñѵÄһЩָÒý¡£
±£³Ö¼ò¶Ì
º¯Êýʽ³ÌÐòÔ±Óë½Ï³¤µÄlambda±í´ïʽÏà´¦»á¸üÓä¿ì£¬µ«ÄÇЩÒù½þÓÚJava¶àÄêµÄÈ˻ᷢÏÖ±£³Ölambda±í´ïÊ½ÎªÇøÇø¼¸ÐдúÂë¸üÈÝÒס£ÄãÉõÖÁ¿ÉÄܸüÔ¸Ò⽫ÆäÏÞÖÆµ½Ò»ÐдúÂ룬²¢ÇÒÄã¿ÉÒÔÇáËÉÖØ¹¹½Ï³¤µÄ±í´ïʽΪһ¸ö·½·¨¡£

ÕâЩÉõÖÁ¿ÉÄÜ»á³ÉΪ·½·¨ÒýÓ᣷½·¨ÒýÓÃÒ»¿ªÊ¼»á¾õµÃÓеãİÉú£¬µ«Êµ¼ÊÉϼá³Ö·½·¨ÒýÓÃÊÇÓмÛÖµµÄ£¬ÒòΪËüÃÇÔÚijЩÇé¿öÏÂÓÐÖúÓڿɶÁÐÔ£¬ºóÃæÎÒ»áÌÖÂÛµ½ÕâÒ»µã¡£

Ã÷È·
ÀàÐÍÐÅϢȱÉÙlambda±í´ïʽ£¬ËùÒÔÄã¿ÉÄÜ»á¾õµÃ°üº¬ÀàÐÍÐÅÏ¢ÓÃÓÚ²ÎÊý»áºÜÓÐÓá£

ÕýÈçÄãËù¼û£¬Õâ»Ø±äµÃÏ൱±¿×¾¡£ËùÒÔÎÒ¸üϲ»¶¸ø²ÎÊýȡһ¸öÓÐÓõÄÃû×Ö¡£µ±È»£¬²»¹ÜÄãÓÐûÓÐÕâô×ö£¬IntelliJ
IDEA¿ÉÒÔÈÃÄã¿´µ½²ÎÊýµÃÀàÐÍÐÅÏ¢¡£

ÉõÖÁÊÇlambdaËù´ú±íµÄº¯Êýʽ½Ó¿Ú£º

3.Õë¶ÔLambda±í´ïʽÉè¼Æ
ÎÒÈÏΪlambda±í´ïʽÓеãÏñ·ºÐÍ¡ª¡ªºÍ·ºÐÍÒ»Æð£¬ÎÒÃǾ³£Ê¹ÓÃËüÃÇ£¨ÀýÈ磬Ìí¼ÓÀàÐÍÐÅÏ¢µ½List<>£©£¬µ«×îºÃÎÒÃÇ¿ÉÒÔÉè¼ÆÒ»ÖÖ·½·¨»òÒ»¸ö¾ßÓзºÐÍÀàÐÍ£¨ÀýÈçPerson<T>£©µÄÀࡣͬÑùµÄ£¬µ±Ê¹ÓÃÀàËÆÓÚStreams
APIµÄ¶«Î÷ʱ£¬ÎÒÃǻᴫµÝlambda±í´ïʽ£¬µ«¸üºÃµÄÊÇ´´ÔìÒ»¸öÐèÒªlambda²ÎÊýµÄ·½·¨¡£
µ«ÊÇ£¬Èç¹ûÄã·¢ÏÖ×Ô¼º´¦ÓÚÕâÀàÇé¿öÏ£¬ÏÂÃæÓÐһЩ³¬°ôµÄ¼¼ÇÉ¡£
IntelliJ IDEA¿ÉÒÔ°ïÄãÒý½øº¯Êýʽ²ÎÊý
ÕâÈÃÄã¿ÉÒÔÔÚÓÐÈ˽«´«µÝÒ»¸ölambda¶ø·ÇObjectµÄµØ·½´´½¨Ò»¸ö²ÎÊý¡£´Ë¹¦Äܵĺô¦ÊÇ£¬Ëü±íÃ÷£¬ÏÖÓк¯Êýʽ½Ó¿ÚÆ¥Å乿¸ñ˵Ã÷¡£

Õâ»áµ¼Ö¡
ʹÓÃÏÖÓеĺ¯Êýʽ½Ó¿Ú
Ëæ×Å¿ª·¢ÈËÔ±Ô½À´Ô½ÊìϤJava 8´úÂ룬ÎÒÃǾÍÄÜÖªµÀµ±Ê¹ÓÃÈçSupplierºÍ ConsumerµÄ½Ó¿Úʱ£¬»á·¢Éúʲô£¬ÒÔ¼°´´½¨Ò»¸ö±¾µØµÄErrorMessageCreator£¨¾Ù¸öÀý×Ó£©¿ÉÄÜ»áÔì³É»ìÂÒ£¬¶øÇÒÀË·Ñ¡£¿´¿´Õâ¸öº¯Êý°üÁ˽âÒ»ÏÂÄÄЩÒѾÊÇ¿ÉÓõġ£
Ìí¼Ó@FunctionalInterfaceµ½º¯Êýʽ½Ó¿Ú
Èç¹ûÄãȷʵÐèÒª´´½¨×Ô¼ºµÄº¯Êýʽ½Ó¿Ú£¬ÄÇô¾ÍÕâÑùÓôË×¢Êͱê¼Ç¡£ÕâËÆºõûÓÐÌ«´óµÄ×÷Ó㬵«IntelliJ
IDEA»á¸æËßÄ㣬ÔÚÄãµÄ½Ó¿Ú²»ÄÜÆ¥ÅäÓÃÓÚº¯Êýʽ½Ó¿ÚµÄÒì³£µÄʱºò¡£µ±ÄãûÓÐÖ¸¶¨Òª¸²¸ÇµÄ·½·¨Ê±£¬Ëü»á±êÖ¾£º

µ±ÄãÖ¸¶¨ÁËÌ«¶à·½·¨µÄʱºò£¬Ëü»á±êÖ¾£º

²¢ÇÒÈç¹ûÄãÓ¦ÓÃËüµ½Ò»¸öÀà¶ø²»ÊǽӿÚʱ£¬Ëü»á¾¯¸æÄ㣺

lambda±í´ïʽ¿ÉÓÃÓÚ´øÓÐÒ»¸öµ¥Ò»³éÏó·½·¨µÄÈκνӿڣ¬µ«ËüÃDz»ÄÜÓÃÓÚ·ûºÏÏàͬ±ê×¼µÄ³éÏóÀà¡£ËÆºõ²»ºÏÂß¼£¬µ«¾ÍÊÇÕâÑù¡£
4.Stream
Stream APIÊÇJava 8ÁíÒ»¸ö´óÌØµã£¬²¢ÇÒÎÒÈÏΪÎÒÃÇ»¹ÕæµÄ²»ÖªµÀÕâ¶ÔÎÒÃǵıàÂ뷽ʽ»á²úÉú¶à´óµÄ¸Ä±ä¡£ÏÂÃæÊÇÎÒ·¢ÏÖµÄһЩÓÐÓõĶ«Î÷¡£
ÅŶӵã²Ù×÷·û
ÎÒ¸öÈ˸üϲ»¶ÅŶÓÎÒµÄÁ÷²Ù×÷¡£µ±È»£¬ÄãûÓбØÒªÕâÑù£¬µ±ÎÒ·¢ÏÖÕâÑù×ö¶ÔÎÒÓаïÖú£º
һĿÁËÈ»µØ¿´µ½ÎÒÓÐÄÄЩ²Ù×÷
µ÷ÊÔ¸üÈÝÒ×£¨ËäÈ»IntelliJ IDEAȷʵÌṩÁ˶ÔÒ»ÐÐÖеÄÈÎÒâ¶à¸ölambda±í´ïʽÉèÖöϵãµÄÄÜÁ¦£¬µ«ÊDzð·Öµ½²»Í¬µÄÐлá±äµÃ¸ü¼òµ¥£©
µ±ÎÒ²âÊÔ¶«Î÷µÄʱºò×¢ÊͲÙ×÷
ÇáËɲåÈëpeek()ÓÃÓÚµ÷ÊÔ»ò²âÊÔ

´ËÍ⣬ÔÚÎÒ¿´À´£¬Ëü¸üÕû½à¡£Èç¹ûÎÒÃǰ´ÕÕÕâ¸öģʽ£¬ÔÚ¼õÉÙ´úÂëÐÐÊý·½ÃæÎÒÃDz¢Ã»ÓÐÔö¼ÓºÜ¶à¡£
Äã¿ÉÄÜÐèÒªµ÷Õû¸ñʽÉèÖÃÒÔÅÅÁеã²Ù×÷·û¡£

ʹÓ÷½·¨ÒýÓÃ
Êǵģ¬È·ÊµÐèÒªÒ»¶Îʱ¼äÀ´ÊÊÓ¦Õâ¸öÆæ¹ÖµÄÓï·¨¡£µ«ÊÇ£¬Èç¹ûʹÓõõ±£¬Ëüȷʵ¿ÉÒÔÔö¼Ó¿É¶ÁÐÔ¡£Çë¿´£º

Ó루Ïà¶Ô£©ÐµÄObjectsÀàÉϵĸ¨Öú·½·¨Ïà±È½Ï£º

ºóÕߵĴúÂë¶ÔÓÚÄÄЩֵÊÇÒª±£´æµÄ¸ü¼ÓÃ÷È·¡£µ±lambda¿ÉÒÔ±»ÕÛµþµ½·½·¨²Î¿¼µÄʱºò£¬IntelliJ IDEAͨ³£»áÈÃÄãÖªµÀ¡£

µ±±éÀúÒ»¸ö¼¯ºÏʱ£¬ÔÚ¿ÉÐеÄÇé¿öÏÂʹÓÃStreams API
¡»òÕßÐµļ¯ºÏ·½·¨£¬ÈçforEach¡£IntelliJ IDEA¸øÄ㽨ÒéÊÇ£º

Ò»°ãʹÓÃStreams API±ÈÑ»·ºÍifÓï¾äµÄ×éºÏ¸ü¼ÓÃ÷È·¡£ÀýÈ磺

IntelliJ IDEA½¨ÒéÕâ¿ÉÖØ¹¹Îª£º

ÎÒËù×öµÄÐÔÄܲâÊÔ±íÃ÷ÕâÖÖÖØ¹¹ÁîÈ˾ªÑÈ¡ª¡ª²¢²»×ÜÊÇ¿ÉÔ¤²âÐÔÄÜÊDZ£³Ö²»±ä£¬¸ÄÉÆ»¹ÊDZäµÃ¸üÔã¡£ÓëÍù³£Ò»Ñù£¬Èç¹ûÐÔÄÜÔÚÓ¦ÓóÌÐòÖÐÊǹؼü£¬ÄÇôÔÚ½»¸¶Ò»ÖÖ·ç¸ñµ½ÁíÒ»ÖÖ֮ǰºâÁ¿Ëü¡£
±éÀúÊý×éʱʹÓÃÑ»·
µ«ÊÇ£¬Ê¹ÓÃJava 8²¢²»Ò»¶¨Òâζ×ÅÄã±ØÐëµ½´¦Ê¹ÓÃÁ÷ºÍÐµļ¯ºÏ·½·¨¡£IntelliJ IDEA»á½¨Òéת»»³ÉÁ÷£¬µ«ÊÇ£¬Õâ²¢²»Òâζ×ÅÄã±ØÐë»Ø´ð¡°yes¡±£¨¼ÇµÃ¼ì²éÊÇ¿ÉÒÔÒÖÖÆ»ò¹Ø±ÕµÄ£©¡£
ÌØ±ðÊÇ£¬±éÀúÔʼÀàÐ͵ÄСÐÍÊý×鼸ºõ¿Ï¶¨»áÓã¬ÒÔ»ñµÃ¸üºÃµÄÐÔÄÜÑ»·£¬ºÜ¿ÉÄÜ£¨ÖÁÉÙ¶ÔÓÚJava¿ª·¢ÈËÔ±ÊÇеÄÁ÷£©¸ü¾ß¿É¶ÁÐÔ¡£

ÓëÈκμ¼ÇÉÒ»Ñù£¬¹æÔò²¢²»ÊÇÒ»³É²»±äµÄ£¬µ«ÄãÓ¦¸Ã¾ö¶¨ÊǾ¡¿ÉÄܵØÊ¹ÓÃStreams API£¬»¹ÊÇÒÀÈ»¶ÔһЩ²Ù×÷ʹÓÃÑ»·¡£×ÜÖ®£¬ÒªÒ»Ö¡£
×îºó
ÿÌì¶¼ÔÚ·¢ÏÖÐµĶ«Î÷£¬²¢ÇÒÓÐʱºòÎ񵀮«ºÃ»á·¢Éú±ä»¯¡ª¡ªÀýÈ磬·½·¨ÒýÓã¬ÎÒÔø¾Éî¶ñÍ´¾ø²¢ÇÒ±ÜÃâÔÚÎҵĴúÂëÖÐʹÓá£ÏÖÔÚÎÒºÜÏëÌýÌýÄãµÄÃØ¾÷£¡ |