ä¸ãLambda表达å¼
Lambda表达å¼å¯ä»¥è¯´æ¯Java 8æ大çåç¹ï¼å¥¹å°å½æ°å¼ç¼ç¨å¼å
¥äºJavaãLambdaå
许æå½æ°ä½ä¸ºä¸ä¸ªæ¹æ³çåæ°ï¼æè
æ代ç çææ°æ®ã
ä¸ä¸ªLambda表达å¼å¯ä»¥ç±ç¨éå·åéçåæ°å表ãâ>符å·ä¸å½æ°ä½ä¸é¨å表示ãä¾å¦ï¼
Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) );
1 Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) );
为äºä½¿ç°æå½æ°æ´å¥½çæ¯æLambda表达å¼ï¼Java
8å¼å
¥äºå½æ°å¼æ¥å£çæ¦å¿µãå½æ°å¼æ¥å£å°±æ¯åªæä¸ä¸ªæ¹æ³çæ®éæ¥å£ãjava.lang.Runnableä¸java.util.concurrent.Callableæ¯å½æ°å¼æ¥å£æå
¸åçä¾åã为æ¤ï¼Java
8å¢å äºä¸ç§ç¹æ®ç注解@FunctionalInterfaceï¼
1 @FunctionalInterface
2 public interface Functional {
3 void method();
4 }
äºãæ¥å£çé»è®¤æ¹æ³ä¸éææ¹æ³
æ们å¯ä»¥å¨æ¥å£ä¸å®ä¹é»è®¤æ¹æ³ï¼ä½¿ç¨defaultå
³é®åï¼å¹¶æä¾é»è®¤çå®ç°ãææå®ç°è¿ä¸ªæ¥å£çç±»é½ä¼æ¥åé»è®¤æ¹æ³çå®ç°ï¼é¤éåç±»æä¾çèªå·±çå®ç°ãä¾å¦ï¼
1 public interface DefaultFunctionInterface {
2 default String defaultFunction() {
3 return "default function";
4 }
5 }
æ们è¿å¯ä»¥å¨æ¥å£ä¸å®ä¹éææ¹æ³ï¼ä½¿ç¨staticå
³é®åï¼ä¹å¯ä»¥æä¾å®ç°ãä¾å¦ï¼
1 public interface StaticFunctionInterface {
2 static String staticFunction() {
3 return "static function";
4 }
5 }
æ¥å£çé»è®¤æ¹æ³åéææ¹æ³çå¼å
¥ï¼å
¶å®å¯ä»¥è®¤ä¸ºå¼å
¥äºCï¼ï¼ä¸æ½è±¡ç±»çç念ï¼ä»¥åæ们åä¹ä¸ç¨å¨æ¯ä¸ªå®ç°ç±»ä¸é½åéå¤ç代ç äºã
ä¸ãæ¹æ³å¼ç¨
é常ä¸Lambda表达å¼èå使ç¨ï¼å¯ä»¥ç´æ¥å¼ç¨å·²æJavaç±»æ对象çæ¹æ³ãä¸è¬æåç§ä¸åçæ¹æ³å¼ç¨ï¼
æé å¨å¼ç¨ãè¯æ³æ¯Class::newï¼æè
æ´ä¸è¬çClass< T >::newï¼è¦æ±æé å¨æ¹æ³æ¯æ²¡æåæ°ï¼
éææ¹æ³å¼ç¨ãè¯æ³æ¯Class::static_methodï¼è¦æ±æ¥åä¸ä¸ªClassç±»åçåæ°ï¼
ç¹å®ç±»çä»»æ对象æ¹æ³å¼ç¨ãå®çè¯æ³æ¯Class::methodãè¦æ±æ¹æ³æ¯æ²¡æåæ°çï¼
ç¹å®å¯¹è±¡çæ¹æ³å¼ç¨ï¼å®çè¯æ³æ¯instance::methodãè¦æ±æ¹æ³æ¥åä¸ä¸ªåæ°ï¼ä¸3ä¸åçå°æ¹å¨äºï¼3æ¯å¨å表å
ç´ ä¸åå«è°ç¨æ¹æ³ï¼è4æ¯å¨æ个对象ä¸è°ç¨æ¹æ³ï¼å°å表å
ç´ ä½ä¸ºåæ°ä¼ å
¥ï¼
åãéå¤æ³¨è§£
å¨Java 5ä¸ä½¿ç¨æ³¨è§£æä¸ä¸ªéå¶ï¼å³ç¸åç注解å¨åä¸ä½ç½®åªè½å£°æä¸æ¬¡ãJava
8å¼å
¥éå¤æ³¨è§£ï¼è¿æ ·ç¸åç注解å¨åä¸å°æ¹ä¹å¯ä»¥å£°æå¤æ¬¡ãéå¤æ³¨è§£æºå¶æ¬èº«éè¦ç¨@Repeatable注解ãJava
8å¨ç¼è¯å¨å±åäºä¼åï¼ç¸å注解ä¼ä»¥éåçæ¹å¼ä¿åï¼å æ¤åºå±çåç并没æååã
äºãæ©å±æ³¨è§£çæ¯æ
Java 8æ©å±äºæ³¨è§£çä¸ä¸æï¼å ä¹å¯ä»¥ä¸ºä»»ä½ä¸è¥¿æ·»å 注解ï¼å
æ¬å±é¨åéãæ³åç±»ãç¶ç±»ä¸æ¥å£çå®ç°ï¼è¿æ¹æ³çå¼å¸¸ä¹è½æ·»å 注解ã
å
ãOptional
Java 8å¼å
¥Optionalç±»æ¥é²æ¢ç©ºæéå¼å¸¸ï¼Optionalç±»æå
æ¯ç±GoogleçGuava项ç®å¼å
¥çãOptionalç±»å®é
ä¸æ¯ä¸ªå®¹å¨ï¼å®å¯ä»¥ä¿åç±»åTçå¼ï¼æè
ä¿ånullã使ç¨Optionalç±»æ们就ä¸ç¨æ¾å¼è¿è¡ç©ºæéæ£æ¥äºã
ä¸ãStream
Stream
APIæ¯æçæ£çå½æ°å¼ç¼ç¨é£æ ¼å¼å
¥å°Javaä¸ãå
¶å®ç®åæ¥è¯´å¯ä»¥æStreamç解为MapReduceï¼å½ç¶GoogleçMapReduceççµæä¹æ¯æ¥èªå½æ°å¼ç¼ç¨ã她å
¶å®æ¯ä¸è¿ä¸²æ¯æè¿ç»ã并è¡èéæä½çå
ç´ ãä»è¯æ³ä¸çï¼ä¹å¾ålinuxç管éãæè
é¾å¼ç¼ç¨ï¼ä»£ç åèµ·æ¥ç®æ´æäºï¼é常é
·å¸
ï¼
å
«ãDate/Time API (JSR 310)
Java 8æ°çDate-Time API (JSR 310)åJoda-Timeçå½±åï¼æä¾äºæ°çjava.timeå
ï¼å¯ä»¥ç¨æ¥æ¿ä»£
java.util.Dateåjava.util.Calendarãä¸è¬ä¼ç¨å°ClockãLocaleDateãLocalTimeãLocaleDateTimeãZonedDateTimeãDurationè¿äºç±»ï¼å¯¹äºæ¶é´æ¥æçæ¹è¿è¿æ¯é常ä¸éçã
ä¹ãJavaScriptå¼æNashorn
Nashornå
许å¨JVMä¸å¼åè¿è¡JavaScriptåºç¨ï¼å
许Javaä¸JavaScriptç¸äºè°ç¨ã
åãBase64
å¨Java 8ä¸ï¼Base64ç¼ç æ为äºJavaç±»åºçæ åãBase64ç±»åæ¶è¿æä¾äºå¯¹URLãMIMEå好çç¼ç å¨ä¸è§£ç å¨ã
é¤äºè¿å大æ°ç¹æ§ä¹å¤ï¼è¿æå¦å¤çä¸äºæ°ç¹æ§ï¼
æ´å¥½çç±»åæ¨æµæºå¶ï¼Java 8å¨ç±»åæ¨æµæ¹é¢æäºå¾å¤§çæé«ï¼è¿å°±ä½¿ä»£ç æ´æ´æ´ï¼ä¸éè¦å¤ªå¤ç强å¶ç±»å转æ¢äºã
ç¼è¯å¨ä¼åï¼Java 8å°æ¹æ³çåæ°åå å
¥äºåèç ä¸ï¼è¿æ ·å¨è¿è¡æ¶éè¿åå°å°±è½è·åå°åæ°åï¼åªéè¦å¨ç¼è¯æ¶ä½¿ç¨-parametersåæ°ã
并è¡ï¼parallelï¼æ°ç»ï¼æ¯æ对æ°ç»è¿è¡å¹¶è¡å¤çï¼ä¸»è¦æ¯parallelSort()æ¹æ³ï¼å®å¯ä»¥å¨å¤æ ¸æºå¨ä¸æ大æé«æ°ç»æåºçé度ã
并åï¼Concurrencyï¼ï¼å¨æ°å¢Streamæºå¶ä¸Lambdaçåºç¡ä¹ä¸ï¼å å
¥äºä¸äºæ°æ¹æ³æ¥æ¯æèéæä½ã
Nashornå¼æjjsï¼åºäºNashornå¼æçå½ä»¤è¡å·¥å
·ãå®æ¥åä¸äºJavaScriptæºä»£ç 为åæ°ï¼å¹¶ä¸æ§è¡è¿äºæºä»£ç ã
ç±»ä¾èµåæå¨jdepsï¼å¯ä»¥æ¾ç¤ºJavaç±»çå
级å«æ类级å«çä¾èµã
JVMçPermGen空é´è¢«ç§»é¤ï¼å代å®çæ¯Metaspaceï¼JEP 122ï¼ã
温馨提示:答案为网友推荐,仅供参考