$ javap -c -v App
警告: 二进制文件App包含cn.victor.study.App
Classfile /Users/chutian/IdeaProjects/demos/target/classes/cn/victor/study/App.class
Last modified 2019-3-2; size 1353 bytes
MD5 checksum 7c3e6a94f67374296a68af43fa788f7b
Compiled from "App.java"
public class cn.victor.study.App
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #9.#31 // java/lang/Object."":()V
#2 = InterfaceMethodref #10.#32 // cn/victor/study/App$LambdaDemo.runLambda:()V
#3 = InvokeDynamic #0:#37 // #0:runLambda:()Lcn/victor/study/App$LambdaDemo;
#4 = Methodref #8.#38 // cn/victor/study/App.doSomething:(Lcn/victor/study/App$LambdaDemo;)V
#5 = Fieldref #39.#40 // java/lang/System.out:Ljava/io/PrintStream;
#6 = String #41 // hello world!
#7 = Methodref #42.#43 // java/io/PrintStream.println:(Ljava/lang/String;)V
#8 = Class #44 // cn/victor/study/App
#9 = Class #45 // java/lang/Object
#10 = Class #46 // cn/victor/study/App$LambdaDemo
#11 = Utf8 LambdaDemo
#12 = Utf8 InnerClasses
#13 = Utf8
#14 = Utf8 ()V
#15 = Utf8 Code
#16 = Utf8 LineNumberTable
#17 = Utf8 LocalVariableTable
#18 = Utf8 this
#19 = Utf8 Lcn/victor/study/App;
#20 = Utf8 doSomething
#21 = Utf8 (Lcn/victor/study/App$LambdaDemo;)V
#22 = Utf8 demo
#23 = Utf8 Lcn/victor/study/App$LambdaDemo;
#24 = Utf8 main
#25 = Utf8 ([Ljava/lang/String;)V
#26 = Utf8 args
#27 = Utf8 [Ljava/lang/String;
#28 = Utf8 lambda$main$0
#29 = Utf8 SourceFile
#30 = Utf8 App.java
#31 = NameAndType #13:#14 // "":()V
#32 = NameAndType #47:#14 // runLambda:()V
#33 = Utf8 BootstrapMethods
#34 = MethodHandle #6:#48 // 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;
#35 = MethodType #14 // ()V
#36 = MethodHandle #6:#49 // invokestatic cn/victor/study/App.lambda$main$0:()V
#37 = NameAndType #47:#50 // runLambda:()Lcn/victor/study/App$LambdaDemo;
#38 = NameAndType #20:#21 // doSomething:(Lcn/victor/study/App$LambdaDemo;)V
#39 = Class #51 // java/lang/System
#40 = NameAndType #52:#53 // out:Ljava/io/PrintStream;
#41 = Utf8 hello world!
#42 = Class #54 // java/io/PrintStream
#43 = NameAndType #55:#56 // println:(Ljava/lang/String;)V
#44 = Utf8 cn/victor/study/App
#45 = Utf8 java/lang/Object
#46 = Utf8 cn/victor/study/App$LambdaDemo
#47 = Utf8 runLambda
#48 = Methodref #57.#58 // 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;
#49 = Methodref #8.#59 // cn/victor/study/App.lambda$main$0:()V
#50 = Utf8 ()Lcn/victor/study/App$LambdaDemo;
#51 = Utf8 java/lang/System
#52 = Utf8 out
#53 = Utf8 Ljava/io/PrintStream;
#54 = Utf8 java/io/PrintStream
#55 = Utf8 println
#56 = Utf8 (Ljava/lang/String;)V
#57 = Class #60 // java/lang/invoke/LambdaMetafactory
#58 = NameAndType #61:#64 // 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;
#59 = NameAndType #28:#14 // lambda$main$0:()V
#60 = Utf8 java/lang/invoke/LambdaMetafactory
#61 = Utf8 metafactory
#62 = Class #66 // java/lang/invoke/MethodHandles$Lookup
#63 = Utf8 Lookup
#64 = Utf8 (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;
#65 = Class #67 // java/lang/invoke/MethodHandles
#66 = Utf8 java/lang/invoke/MethodHandles$Lookup
#67 = Utf8 java/lang/invoke/MethodHandles
{
public cn.victor.study.App();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: return
LineNumberTable:
line 7: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lcn/victor/study/App;
public static void doSomething(cn.victor.study.App$LambdaDemo);
descriptor: (Lcn/victor/study/App$LambdaDemo;)V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokeinterface #2, 1 // InterfaceMethod cn/victor/study/App$LambdaDemo.runLambda:()V
6: return
LineNumberTable:
line 14: 0
line 15: 6
LocalVariableTable:
Start Length Slot Name Signature
0 7 0 demo Lcn/victor/study/App$LambdaDemo;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
0: invokedynamic #3, 0 // InvokeDynamic #0:runLambda:()Lcn/victor/study/App$LambdaDemo;
5: invokestatic #4 // Method doSomething:(Lcn/victor/study/App$LambdaDemo;)V
8: return
LineNumberTable:
line 18: 0
line 19: 8
LocalVariableTable:
Start Length Slot Name Signature
0 9 0 args [Ljava/lang/String;
private static void lambda$main$0();
descriptor: ()V
flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=0, args_size=0
0: getstatic #5 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #6 // String hello world!
5: invokevirtual #7 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
LineNumberTable:
line 18: 0
}
SourceFile: "App.java"
InnerClasses:
public static #11= #10 of #8; //LambdaDemo=class cn/victor/study/App$LambdaDemo of class cn/victor/study/App
public static final #63= #62 of #65; //Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles
BootstrapMethods:
0: #34 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;
Method arguments:
#35 ()V
#36 invokestatic cn/victor/study/App.lambda$main$0:()V
#35 ()V