通过cmd命令Windows系统下查看Java字节码方式

通过cmd命令Windows系统下查看Java字节码方式
GenParameterTypeDemo这个类的简单方法签名。

首先打开cmd运行,打开命令提示符页面
通过cmd命令Windows系统下查看Java字节码方式
使用cd 文件原路径进入到文件夹下
通过cmd命令Windows系统下查看Java字节码方式
使用javap 类路径就能获取到简单方法签名

D:\idea_project\spring\deepinjava\state-1\lesson-3\target\classes>javap com.segmentfault.deep.in.java.generic.GenParameterTypeDemo
Compiled from "GenParameterTypeDemo.java"
public class com.segmentfault.deep.in.java.generic.GenParameterTypeDemo {
  public com.segmentfault.deep.in.java.generic.GenParameterTypeDemo();
  public static void main(java.lang.String[]);
  public static <C extends java.util.Collection<E>, E extends java.io.Serializable> void add(C, E);
  public static <C extends java.lang.Iterable<E>, E extends java.io.Serializable> void forEach(C, java.util.function.Consumer<E>);
}

如果想获取详细字节码,使用javap -v 类路径即可


D:\idea_project\spring\deepinjava\state-1\lesson-3\target\classes>javap -v com.segmentfault.deep.in.java.generic.GenParameterTypeDemo
Classfile /D:/idea_project/spring/deepinjava/state-1/lesson-3/target/classes/com/segmentfault/deep/in/java/generic/GenParameterTypeDemo.class
  Last modified 2019-3-12; size 3915 bytes
  MD5 checksum 39cba996bfa5b91a83c354ca42ba393d
  Compiled from "GenParameterTypeDemo.java"
public class com.segmentfault.deep.in.java.generic.GenParameterTypeDemo
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
    #1 = Methodref          #30.#85       // java/lang/Object."<init>":()V
    #2 = Class              #86           // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container
    #3 = String             #87           // String
    #4 = Methodref          #2.#88        // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container."<init>":(Ljava/lang/CharSequence;)V
    #5 = String             #89           // Hello,World
    #6 = Fieldref           #90.#91       // java/lang/System.out:Ljava/io/PrintStream;
    #7 = Methodref          #2.#92        // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container.getElement:()Ljava/lang/CharSequence;
    #8 = Methodref          #93.#94       // java/io/PrintStream.println:(Ljava/lang/Object;)V
    #9 = Class              #95           // java/lang/StringBuffer
   #10 = String             #96           // 2019
   #11 = Methodref          #9.#97        // java/lang/StringBuffer."<init>":(Ljava/lang/String;)V
   #12 = Methodref          #2.#98        // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container.setElement:(Ljava/lang/CharSequence;)V
   #13 = Class              #99           // java/util/ArrayList
   #14 = Methodref          #13.#85       // java/util/ArrayList."<init>":()V
   #15 = Methodref          #29.#100      // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo.add:(Ljava/util/Collection;Ljava/io/Serializable;)V
   #16 = Methodref          #101.#102     // java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
   #17 = Class              #103          // java/util/HashSet
   #18 = Methodref          #17.#85       // java/util/HashSet."<init>":()V
   #19 = Class              #104          // java/io/Serializable
   #20 = Methodref          #105.#106     // java/util/Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
   #21 = Methodref          #30.#107      // java/lang/Object.getClass:()Ljava/lang/Class;
   #22 = InvokeDynamic      #0:#113       // #0:accept:(Ljava/io/PrintStream;)Ljava/util/function/Consumer;
   #23 = Methodref          #29.#114      // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo.forEach:(Ljava/lang/Iterable;Ljava/util/function/Consumer;)V
   #24 = InterfaceMethodref #115.#116     // java/util/Collection.add:(Ljava/lang/Object;)Z
   #25 = InterfaceMethodref #117.#118     // java/lang/Iterable.iterator:()Ljava/util/Iterator;
   #26 = InterfaceMethodref #119.#120     // java/util/Iterator.hasNext:()Z
   #27 = InterfaceMethodref #119.#121     // java/util/Iterator.next:()Ljava/lang/Object;
   #28 = InterfaceMethodref #122.#123     // java/util/function/Consumer.accept:(Ljava/lang/Object;)V
   #29 = Class              #124          // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo
   #30 = Class              #125          // java/lang/Object
   #31 = Class              #126          // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$TClass
   #32 = Utf8               TClass
   #33 = Utf8               InnerClasses
   #34 = Class              #127          // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Template
   #35 = Utf8               Template
   #36 = Class              #128          // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$I2
   #37 = Utf8               I2
   #38 = Class              #129          // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$I
   #39 = Utf8               I
   #40 = Class              #130          // com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$C
   #41 = Utf8               C
   #42 = Utf8               Container
   #43 = Utf8               <init>
   #44 = Utf8               ()V
   #45 = Utf8               Code
   #46 = Utf8               LineNumberTable
   #47 = Utf8               LocalVariableTable
   #48 = Utf8               this
   #49 = Utf8               Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo;
   #50 = Utf8               main
   #51 = Utf8               ([Ljava/lang/String;)V
   #52 = Utf8               args
   #53 = Utf8               [Ljava/lang/String;
   #54 = Utf8               a
   #55 = Utf8               Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container;
   #56 = Utf8               c
   #57 = Utf8               c2
   #58 = Utf8               LocalVariableTypeTable
   #59 = Utf8               Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container<Ljava/lang/String;>;
   #60 = Utf8               Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container<Ljava/lang/StringBuffer;>;
   #61 = Utf8               Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container<Ljava/lang/StringBuilder;>;
   #62 = Utf8               add
   #63 = Utf8               (Ljava/util/Collection;Ljava/io/Serializable;)V
   #64 = Utf8               target
   #65 = Utf8               Ljava/util/Collection;
   #66 = Utf8               element
   #67 = Utf8               Ljava/io/Serializable;
   #68 = Utf8               TC;
   #69 = Utf8               TE;
   #70 = Utf8               Signature
   #71 = Utf8               <C::Ljava/util/Collection<TE;>;E::Ljava/io/Serializable;>(TC;TE;)V
   #72 = Utf8               forEach
   #73 = Utf8               (Ljava/lang/Iterable;Ljava/util/function/Consumer;)V
   #74 = Utf8               e
   #75 = Utf8               source
   #76 = Utf8               Ljava/lang/Iterable;
   #77 = Utf8               consumer
   #78 = Utf8               Ljava/util/function/Consumer;
   #79 = Utf8               Ljava/util/function/Consumer<TE;>;
   #80 = Utf8               StackMapTable
   #81 = Class              #131          // java/util/Iterator
   #82 = Utf8               <C::Ljava/lang/Iterable<TE;>;E::Ljava/io/Serializable;>(TC;Ljava/util/function/Consumer<TE;>;)V
   #83 = Utf8               SourceFile
   #84 = Utf8               GenParameterTypeDemo.java
   #85 = NameAndType        #43:#44       // "<init>":()V
   #86 = Utf8               com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container
   #87 = Utf8               String
   #88 = NameAndType        #43:#132      // "<init>":(Ljava/lang/CharSequence;)V
   #89 = Utf8               Hello,World
   #90 = Class              #133          // java/lang/System
   #91 = NameAndType        #134:#135     // out:Ljava/io/PrintStream;
   #92 = NameAndType        #136:#137     // getElement:()Ljava/lang/CharSequence;
   #93 = Class              #138          // java/io/PrintStream
   #94 = NameAndType        #139:#140     // println:(Ljava/lang/Object;)V
   #95 = Utf8               java/lang/StringBuffer
   #96 = Utf8               2019
   #97 = NameAndType        #43:#141      // "<init>":(Ljava/lang/String;)V
   #98 = NameAndType        #142:#132     // setElement:(Ljava/lang/CharSequence;)V
   #99 = Utf8               java/util/ArrayList
  #100 = NameAndType        #62:#63       // add:(Ljava/util/Collection;Ljava/io/Serializable;)V
  #101 = Class              #143          // java/lang/Integer
  #102 = NameAndType        #144:#145     // valueOf:(I)Ljava/lang/Integer;
  #103 = Utf8               java/util/HashSet
  #104 = Utf8               java/io/Serializable
  #105 = Class              #146          // java/util/Arrays
  #106 = NameAndType        #147:#148     // asList:([Ljava/lang/Object;)Ljava/util/List;
  #107 = NameAndType        #149:#150     // getClass:()Ljava/lang/Class;
  #108 = Utf8               BootstrapMethods
  #109 = MethodHandle       #6:#151       // 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;
  #110 = MethodType         #140          //  (Ljava/lang/Object;)V
  #111 = MethodHandle       #5:#8         // invokevirtual java/io/PrintStream.println:(Ljava/lang/Object;)V
  #112 = MethodType         #152          //  (Ljava/io/Serializable;)V
  #113 = NameAndType        #153:#154     // accept:(Ljava/io/PrintStream;)Ljava/util/function/Consumer;
  #114 = NameAndType        #72:#73       // forEach:(Ljava/lang/Iterable;Ljava/util/function/Consumer;)V
  #115 = Class              #155          // java/util/Collection
  #116 = NameAndType        #62:#156      // add:(Ljava/lang/Object;)Z
  #117 = Class              #157          // java/lang/Iterable
  #118 = NameAndType        #158:#159     // iterator:()Ljava/util/Iterator;
  #119 = Class              #131          // java/util/Iterator
  #120 = NameAndType        #160:#161     // hasNext:()Z
  #121 = NameAndType        #162:#163     // next:()Ljava/lang/Object;
  #122 = Class              #164          // java/util/function/Consumer
  #123 = NameAndType        #153:#140     // accept:(Ljava/lang/Object;)V
  #124 = Utf8               com/segmentfault/deep/in/java/generic/GenParameterTypeDemo
  #125 = Utf8               java/lang/Object
  #126 = Utf8               com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$TClass
  #127 = Utf8               com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Template
  #128 = Utf8               com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$I2
  #129 = Utf8               com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$I
  #130 = Utf8               com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$C
  #131 = Utf8               java/util/Iterator
  #132 = Utf8               (Ljava/lang/CharSequence;)V
  #133 = Utf8               java/lang/System
  #134 = Utf8               out
  #135 = Utf8               Ljava/io/PrintStream;
  #136 = Utf8               getElement
  #137 = Utf8               ()Ljava/lang/CharSequence;
  #138 = Utf8               java/io/PrintStream
  #139 = Utf8               println
  #140 = Utf8               (Ljava/lang/Object;)V
  #141 = Utf8               (Ljava/lang/String;)V
  #142 = Utf8               setElement
  #143 = Utf8               java/lang/Integer
  #144 = Utf8               valueOf
  #145 = Utf8               (I)Ljava/lang/Integer;
  #146 = Utf8               java/util/Arrays
  #147 = Utf8               asList
  #148 = Utf8               ([Ljava/lang/Object;)Ljava/util/List;
  #149 = Utf8               getClass
  #150 = Utf8               ()Ljava/lang/Class;
  #151 = Methodref          #165.#166     // 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;
  #152 = Utf8               (Ljava/io/Serializable;)V
  #153 = Utf8               accept
  #154 = Utf8               (Ljava/io/PrintStream;)Ljava/util/function/Consumer;
  #155 = Utf8               java/util/Collection
  #156 = Utf8               (Ljava/lang/Object;)Z
  #157 = Utf8               java/lang/Iterable
  #158 = Utf8               iterator
  #159 = Utf8               ()Ljava/util/Iterator;
  #160 = Utf8               hasNext
  #161 = Utf8               ()Z
  #162 = Utf8               next
  #163 = Utf8               ()Ljava/lang/Object;
  #164 = Utf8               java/util/function/Consumer
  #165 = Class              #167          // java/lang/invoke/LambdaMetafactory
  #166 = NameAndType        #168:#171     // 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;
  #167 = Utf8               java/lang/invoke/LambdaMetafactory
  #168 = Utf8               metafactory
  #169 = Class              #173          // java/lang/invoke/MethodHandles$Lookup
  #170 = Utf8               Lookup
  #171 = 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;
  #172 = Class              #174          // java/lang/invoke/MethodHandles
  #173 = Utf8               java/lang/invoke/MethodHandles$Lookup
  #174 = Utf8               java/lang/invoke/MethodHandles
{
  public com.segmentfault.deep.in.java.generic.GenParameterTypeDemo();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Method java/lang/Object."<init>":()V
         4: return
      LineNumberTable:
        line 10: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
         0: new           #2                  // class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container
         3: dup
         4: ldc           #3                  // String String
         6: invokespecial #4                  // Method com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container."<init>":(Ljava/lang/CharSequence;)V
         9: astore_1
        10: new           #2                  // class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container
        13: dup
        14: ldc           #5                  // String Hello,World
        16: invokespecial #4                  // Method com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container."<init>":(Ljava/lang/CharSequence;)V
        19: astore_2
        20: new           #2                  // class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container
        23: dup
        24: ldc           #5                  // String Hello,World
        26: invokespecial #4                  // Method com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container."<init>":(Ljava/lang/CharSequence;)V
        29: astore_3
        30: getstatic     #6                  // Field java/lang/System.out:Ljava/io/PrintStream;
        33: aload_2
        34: invokevirtual #7                  // Method com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container.getElement:()Ljava/lang/CharSequence;
        37: invokevirtual #8                  // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
        40: aload_2
        41: new           #9                  // class java/lang/StringBuffer
        44: dup
        45: ldc           #10                 // String 2019
        47: invokespecial #11                 // Method java/lang/StringBuffer."<init>":(Ljava/lang/String;)V
        50: invokevirtual #12                 // Method com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container.setElement:(Ljava/lang/CharSequence;)V
        53: getstatic     #6                  // Field java/lang/System.out:Ljava/io/PrintStream;
        56: aload_2
        57: invokevirtual #7                  // Method com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container.getElement:()Ljava/lang/CharSequence;
        60: invokevirtual #8                  // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
        63: new           #13                 // class java/util/ArrayList
        66: dup
        67: invokespecial #14                 // Method java/util/ArrayList."<init>":()V
        70: ldc           #5                  // String Hello,World
        72: invokestatic  #15                 // Method add:(Ljava/util/Collection;Ljava/io/Serializable;)V
        75: new           #13                 // class java/util/ArrayList
        78: dup
        79: invokespecial #14                 // Method java/util/ArrayList."<init>":()V
        82: iconst_1
        83: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
        86: invokestatic  #15                 // Method add:(Ljava/util/Collection;Ljava/io/Serializable;)V
        89: new           #17                 // class java/util/HashSet
        92: dup
        93: invokespecial #18                 // Method java/util/HashSet."<init>":()V
        96: iconst_2
        97: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
       100: invokestatic  #15                 // Method add:(Ljava/util/Collection;Ljava/io/Serializable;)V
       103: iconst_3
       104: anewarray     #19                 // class java/io/Serializable
       107: dup
       108: iconst_0
       109: iconst_1
       110: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
       113: aastore
       114: dup
       115: iconst_1
       116: iconst_2
       117: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
       120: aastore
       121: dup
       122: iconst_2
       123: iconst_4
       124: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
       127: aastore
       128: invokestatic  #20                 // Method java/util/Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
       131: getstatic     #6                  // Field java/lang/System.out:Ljava/io/PrintStream;
       134: dup
       135: invokevirtual #21                 // Method java/lang/Object.getClass:()Ljava/lang/Class;
       138: pop
       139: invokedynamic #22,  0             // InvokeDynamic #0:accept:(Ljava/io/PrintStream;)Ljava/util/function/Consumer;
       144: invokestatic  #23                 // Method forEach:(Ljava/lang/Iterable;Ljava/util/function/Consumer;)V
       147: return
      LineNumberTable:
        line 12: 0
        line 23: 10
        line 24: 20
        line 26: 30
        line 29: 40
        line 30: 53
        line 33: 63
        line 34: 75
        line 35: 89
        line 37: 103
        line 38: 147
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0     148     0  args   [Ljava/lang/String;
           10     138     1     a   Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container;
           20     128     2     c   Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container;
           30     118     3    c2   Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container;
      LocalVariableTypeTable:
        Start  Length  Slot  Name   Signature
           10     138     1     a   Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container<Ljava/lang/String;>;
           20     128     2     c   Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container<Ljava/lang/StringBuffer;>;
           30     118     3    c2   Lcom/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container<Ljava/lang/StringBuilder;>;

  public static <C extends java.util.Collection<E>, E extends java.io.Serializable> void add(C, E);
    descriptor: (Ljava/util/Collection;Ljava/io/Serializable;)V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: aload_1
         2: invokeinterface #24,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
         7: pop
         8: return
      LineNumberTable:
        line 79: 0
        line 80: 8
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       9     0 target   Ljava/util/Collection;
            0       9     1 element   Ljava/io/Serializable;
      LocalVariableTypeTable:
        Start  Length  Slot  Name   Signature
            0       9     0 target   TC;
            0       9     1 element   TE;
    Signature: #71                          // <C::Ljava/util/Collection<TE;>;E::Ljava/io/Serializable;>(TC;TE;)V

  public static <C extends java.lang.Iterable<E>, E extends java.io.Serializable> void forEach(C, java.util.function.Consumer<E>);
    descriptor: (Ljava/lang/Iterable;Ljava/util/function/Consumer;)V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
         0: aload_0
         1: invokeinterface #25,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
         6: astore_2
         7: aload_2
         8: invokeinterface #26,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
        13: ifeq          36
        16: aload_2
        17: invokeinterface #27,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
        22: checkcast     #19                 // class java/io/Serializable
        25: astore_3
        26: aload_1
        27: aload_3
        28: invokeinterface #28,  2           // InterfaceMethod java/util/function/Consumer.accept:(Ljava/lang/Object;)V
        33: goto          7
        36: return
      LineNumberTable:
        line 84: 0
        line 85: 26
        line 86: 33
        line 87: 36
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
           26       7     3     e   Ljava/io/Serializable;
            0      37     0 source   Ljava/lang/Iterable;
            0      37     1 consumer   Ljava/util/function/Consumer;
      LocalVariableTypeTable:
        Start  Length  Slot  Name   Signature
           26       7     3     e   TE;
            0      37     0 source   TC;
            0      37     1 consumer   Ljava/util/function/Consumer<TE;>;
      StackMapTable: number_of_entries = 2
        frame_type = 252 /* append */
          offset_delta = 7
          locals = [ class java/util/Iterator ]
        frame_type = 250 /* chop */
          offset_delta = 28
    Signature: #82                          // <C::Ljava/lang/Iterable<TE;>;E::Ljava/io/Serializable;>(TC;Ljava/util/function/Consumer<TE;>;)V
}
SourceFile: "GenParameterTypeDemo.java"
InnerClasses:
     public static #32= #31 of #29; //TClass=class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$TClass of class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo
     public static #35= #34 of #29; //Template=class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Template of class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo
     public static #37= #36 of #29; //I2=class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$I2 of class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo
     public static #39= #38 of #29; //I=class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$I of class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo
     public static #41= #40 of #29; //C=class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$C of class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo
     public static #42= #2 of #29; //Container=class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo$Container of class com/segmentfault/deep/in/java/generic/GenParameterTypeDemo
     public static final #170= #169 of #172; //Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles
BootstrapMethods:
  0: #109 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:
      #110 (Ljava/lang/Object;)V
      #111 invokevirtual java/io/PrintStream.println:(Ljava/lang/Object;)V
      #112 (Ljava/io/Serializable;)V