Java 8 Ô¤¼Æ½«ÔÚ 2013 Äê·¢²¼£¬Java 8 ½«Ö§³Ö Lambda ¹¦ÄÜ£¬¾¡¹Ü¸Ã¹æ·¶»¹ÔÚ²»¶ÏµÄ±ä»¯£¬µ«ÊÇ Java 8 µÄ¿ª·¢°æÒѾʵÏÖÁË¶Ô lambda µÄÖ§³Ö¡£
¹ØÓÚ lambda ±í´ïʽµÄ¶¨ÒåÇ뿴ά»ù°Ù¿Æ¡£
¸ÃÎÄÕ½«´øÄãÊìϤ lambda Óï·¨£¬ÒÔ¼°Ê¹Óü¯ºÏ API ÖÐµÄ lambda ÒÔ¼°Ïà¹ØµÄÓïÑÔÔöÇ¿£¬±¾ÎÄËùÓеĴúÂë¶¼ÊÇÔÚ JDK 8 lambda build b39 ±àÒë¡£
Ö»°üº¬Ò»¸ö·½·¨µÄ½Ó¿Ú±»³ÆÎª¹¦Äܽӿڣ¬Lambda ±í´ïʽÓÃÓÃÓÚÈκι¦ÄܽӿÚÊÊÓõĵط½¡£
java.awt.event.ActionListener ¾ÍÊÇÒ»¸ö¹¦Äܽӿڣ¬ÒòΪËüÖ»ÓÐÒ»¸ö·½·¨£ºvoid actionPerformed(ActionEvent). ÔÚ Java 7 ÖÐÎÒÃÇ»á±àдÈçÏ´úÂ룺
±àÒëÆ÷ÖªµÀlambda ±í´ïʽ±ØÐë·ûºÏ void actionPerformed(ActionEvent) ·½·¨µÄ¶¨Òå¡£¿´ÆðÀ´ lambda ʵÌå·µ»Ø void£¬Êµ¼ÊÉÏËü¿ÉÒÔÍÆ¶Ï³ö²ÎÊý e µÄÀàÐÍÊÇ java.awt.event.ActionEvent.
Java 8 µÄÀà¿â°üº¬Ò»¸öеİü java.util.functions £¬Õâ¸ö°üÖÐÓкܶàÐµĹ¦Äܽӿڣ¬ÕâЩ½Ó¿Ú¿ÉÓ뼯ºÏ API Ò»ÆðʹÓá£
ʹÓÃν´Ê (Predicate) À´É¸Ñ¡¼¯ºÏ£º
ÎÒÃÇ¿ÉʹÓÃÒ»¸öеĵü´úÆ÷·½·¨À´Ìæ»» for Ñ»· void forEach(Block< super T>):
×îºóµÄ½á¹û¾ÍÊÇÓøüÉٵĴúÂëÀ´´¦Àí¼¯ºÏ£º
ÎÒÃÇ¿Éͨ¹ý :: Óï·¨À´ÒýÓÃij¸ö·½·¨¡£·½·¨ÒýÓñ»ÈÏΪÊǸú lambda ±í´ïʽһÑùµÄ£¬¿ÉÓÃÓÚ¹¦ÄܽӿÚËùÊÊÓõĵط½¡£
×îºó£¬ÎÒÃÇ´´½¨Ò»¸öÒýÓõ½ËæÒâʵÀýµÄÀý×Ó£º
ÕâÀïÎÒÃÇÎÞÐè°ó¶¨·½·¨ÒýÓõ½Ä³¸öʵÀý£¬ÎÒÃÇÖ±½Ó½«ÊµÀý×öΪ¹¦ÄܽӿڵIJÎÊý½øÐд«µÝ¡£
Ö±µ½½ñÌìµÄ Java £¬¶¼²»¿ÉÄÜΪһ¸ö½Ó¿ÚÌí¼Ó·½·¨¶ø²»»áÓ°Ïìµ½ÒÑÓеÄʵÏÖÀà¡£¶ø Java 8 ÔÊÐíÄãΪ½Ó¿Ú×ÔÉíÖ¸¶¨Ò»¸öĬÈϵÄʵÏÖ£º
lambda ²»Ö»ÊÇ¿ÉÒÔ¼õÉٺܶà´úÂëµÄ±àд£¬Æä×Ö½ÚÂëºÍÔËÐÐʱµÄʵÏÖÒ²±È Java 7 ÖеÄÄäÃûÀàµÄЧÂʸü¸ß¡£Õë¶Ôÿһ¸ö lambda ±í´ïʽ£¬±àÒëÆ÷¶¼»á´´½¨Ò»¸ö¶ÔÓ¦µÄÐÎÈç lambda$1() ÕâÑùµÄ·½·¨¡£Õâ¸ö¹ý³Ì±»³ÆÖ®Îª lambda body desugaring. µ±Óö¼ûÒ»¸ö lambda ±í´ïʽ£¬±àÒëÆ÷½«»á·¢ÆðÒ»¸ö invokedynamic µ÷Ó㬲¢´ÓÄ¿±ê¹¦ÄܽӿÚÖлñÈ¡·µ»ØÖµ¡£
±¾ÎĺܶàÄÚÈݶ¼»ùÓÚ Brian Goetz µÄÎÄÕ£ºState of the Lambda, State of the Lambda: Libraries Edition and Translation of Lambda Expressions. ÕâЩÎÄ×ÖÏêϸÃèÊöÁË lambda Óï·¨¡¢±äÁ¿²¶»ñ¡¢ÀàÐͽӿںͱàÒëµÈÄÚÈÝ¡£