Java Reference
In-Depth Information
Listing 8-5. Java Code for an Inline Lambda with Its Bytecode (Abbreviated)
1 // Listing5.java, which is compiled to Listing5.class
2 import java.util.function.*;
3
4 public class Listing5 {
5
6 public String provideMessage(String message) {
7 return message;
8 }
9
10 public Supplier<String> getSupplier(String message) {
11 return () -> this.provideMessage(message);
12 }
13
14 }
15
16 // Abbreviated result of executing /usr/bin/javap -v -l -p -s -c Listing5 in the same
directory as Listing5.class
17 public class Listing5
18 BootstrapMethods:
19 0: #25 invokestatic java/lang/invoke/LambdaMetafactory.metafactory:(
Ljava/lang/invoke/MethodHandles$Lookup;
Ljava/lang/String;
Ljava/lang/invoke/MethodType;
Ljava/lang/invoke/MethodType;
Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/MethodType;
)Ljava/lang/invoke/CallSite;
20 Method arguments:
21 #27 ()Ljava/lang/Object;
22 #28 invokespecial Listing5.lambda$getSupplier$0:(Ljava/lang/String;)Ljava/lang/
String;
23 #29 ()Ljava/lang/String;
24 {
25 public Listing5();
26
27 public java.lang.String provideMessage(java.lang.String);
28 Code:
29 stack=1, locals=2, args_size=2
30 0: aload_1
31 1: areturn
32
33 public java.util.function.Supplier<java.lang.String> getSupplier(java.lang.String);
34 Code:
35 stack=2, locals=2, args_size=2
36 0: aload_0
37 1: aload_1
38 2: invokedynamic #2, 0 // InvokeDynamic
// #0:get:(LListing5;Ljava/lang/String;)
Ljava/util/function/Supplier;
Search WWH ::




Custom Search