???????Java 8 Lambda????
???????????? ???????[ 2016/6/15 10:34:56 ] ??????????????????? Java
????2014??3?锟�?Java 8??????Lambda??????????????????????????????????????????????Lambda????????写?????????????纾�????????Lambda??????????????????API????????渭????????????????
????int total = invoices.stream().filter(inv -> inv.getMonth() ==
????Month.JULY).mapToInt(Invoice::getAmount).sum();
????????????????????????未??????屑????7?路?????????睢�???????????Lambda?????????7?路????????梅????????????????????睢�
?????????????????Java????????JVM?????未???Lambda?????????????????妾�??????????????????Lambda???????????????????????????????????????????????????????????????Lambda??????????????????????????????????屑???????????????????????????????????????????姹�??
int total = invoices.stream().filter(new Predicate()
{
@Override
public boolean test(Invoice inv) {
return inv.getMonth() == Month.JULY;
}
}).mapToInt(new ToIntFunction()
{
@Override
public int applyAsInt(Invoice inv)
{
return inv.getAmount();
}
}).sum();
?????????????????Java????????胁????????????????Lambda????????????Lambda?????????????????????????????????????????????Lambda???????????????????????????????????Lambda??????????????
???????????????????
???????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????? ClassName???????????????????????????????????????????????????????????????????????????????????????????????????????锌???????????????????????邪????????IO????JAR?????
????????Lambda?????????????????????????Lambda????????????????????????????????????????屑????????????JVM?械???????Java 8?????????????????????????????????????JIT???????????????娲�?????????小????????????????????????????????????????????????????????????????????????????????斜???????渭??????????????????????????味????????????????????
?????????????Lambda?????????????????????????????????Lambda????????????????????????JVM????????????????
???????????????????未???
????import java.util.function.Function;public class AnonymousClassExample
????{
????Function format = new Function()
????{
????public String apply(String input)
????{
????return Character.toUpperCase(input.charAt(0)) + input.substring(1);
????}
????};
????}
????????????????????????魏????????????????
????javap -c -v ClassName
????????????Function???????????????????????????锟�?
????0: aload_0 1: invokespecial #1 // Method java/lang/Object."":()V4: aload_0 5: new #2 // class AnonymousClassExample$18: dup 9: aload_0 10: invokespecial #3 // Method AnonymousClass$1."":(LAnonymousClassExample;)V13: putfield #4 // Field format:Ljava/util/function/Function;16: return
????????????????????锟�?
??????5?校????????????new??????????AnonymousClassExample$1??????????????鈥�???????????????????小?
??????8?校????dup???????????????谩?
??????10?校??????????????????invokespecial???????????????????????????????
??????13?校??????????????????????????????????putfield????娴紸nonymousClassExample???format?????小?
????AnonymousClassExample1??????????????????????Function????????
??????Lambda???????????????????????????????械?????????缍�?妫�??????????????????????????????????Lambda?????????????????????????????????????Java?????JVM??????????????????????????????????????????????????JVM?????????????????????????????????????Lambda????????喂??????
????Lambdas??????invokedynamic
????????????????????Java?????JVM?????????????????????????????????Java 7?????invokedynamic????????????????效??????????????Lambda????????????????????????????
????1.???????invokedynamic??????????Lambda????????????????????Lambda??????????????????????
????2.??Lambda?????????????????????invokedynamic?????谩?
??????????????????????????????????????Lambda?????????
????import java.util.function.Function;public class Lambda { Function f = s -> Integer.parseInt(s);}
????????????????????????????????
????0: aload_01: invokespecial #1 // Method java/lang/Object."":()V4: aload_05: invokedynamic #2?? 0 // InvokeDynamic #0:apply:()Ljava/util/function/Function;10: putfield #3 // Field f:Ljava/util/function/Function;13: return
??????????????????????????????械???????javac?????????????????????javac??????????梅?????
????Lambda????????????????????????Lambda?????????????????Lambda?????????????????????????????????????????????????????
????????????斜????????Lambda??????????????????????????????????????????????校?????????????Lambda????位?????????小?????????????Lambda??????????????????????????
????static Integer lambda$1(String s) { return Integer.parseInt(s);}
???????????????????$1?????????????????????????????????????????
????????????????Lambda????????械???????????Lambda?????????????????????????校??????????????????????????????????????????小???????校???????????????????????????????????????????????小?????????????????
????int offset = 100;Function f = s -> Integer.parseInt(s) + offset;
???????????????????????
????static Integer lambda$1(int offset?? String s) { return Integer.parseInt(s) + offset;}
??????????????????????Lambda???????????????????????????invokedynamic??????????????????貌?????????????????纾�??????????????????????小????Lambda?????????????????????????????????????????????????????????????????????????????????????
??????

???路???
??????????????????
2023/3/23 14:23:39???写?貌??????????
2023/3/22 16:17:39????????????????????些??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???路???????路
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11