这是反汇编您的代码。变量t
是对象类型。checkcast
在调用接口方法之前生成指令。如果 的值t
没有实现接口,则抛出 ClassCastException。
Compiled from "Generic.java"
public class Generic<T extends java.lang.Appendable & java.lang.AutoCloseable> {
T t;
public Generic();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
T method() throws java.lang.Exception;
Code:
0: aload_0
1: getfield #2 // Field t:Ljava/lang/Object;
4: checkcast #3 // class java/lang/AutoCloseable
7: invokeinterface #4, 1 // InterfaceMethod java/lang/AutoCloseable.close:()V
12: iconst_0
13: istore_1
14: aload_0
15: getfield #2 // Field t:Ljava/lang/Object;
18: checkcast #5 // class java/lang/Appendable
21: iload_1
22: invokeinterface #6, 2 // InterfaceMethod java/lang/Appendable.append:(C)Ljava/lang/Appendable;
27: pop
28: aload_0
29: getfield #2 // Field t:Ljava/lang/Object;
32: areturn
public <T> T method2(T);
Code:
0: aload_1
1: areturn
}