import java.util.ArrayList;
public class MyGenericList<T> {
private ArrayList<T> _listContainer = new ArrayList<T>();
public void add(T tt) {
this._listContainer.add(tt);
}
public T Get(int positionIndex) {
return _listContainer.get(positionIndex);
}
}
public class Main {
public static void main(String[] args) {
var tt1 = new MyGenericList<String>();
var tt2 = new MyGenericList<Integer>();
tt1.add("hello1");
tt2.add(0);
System.out.println(tt1.Get(0));
System.out.println(tt2.Get(0));
System.out.println("tt1.getClass() == tt2.getClass() ="+(tt1.getClass() == tt2.getClass()));
if(tt1 instanceof MyGenericList<String>){
System.out.println("tt1 instanceof MyGenericList<String> =true");
}
}
}
程序執行結果:
hello1
0
tt1.getClass() == tt2.getClass() =true
tt1 instanceof MyGenericList<String> =true
Compiled from "MyGenericList.java"
public class MyGenericList<T> {
public MyGenericList();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: new #7 // class java/util/ArrayList
8: dup
9: invokespecial #9 // Method java/util/ArrayList."<init>":()V
12: putfield #10 // Field _listContainer:Ljava/util/ArrayList;
15: return
public void add(T);
Code:
0: aload_0
1: getfield #10 // Field _listContainer:Ljava/util/ArrayList;
4: aload_1
5: invokevirtual #16 // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
8: pop
9: return
public T Get(int);
Code:
0: aload_0
1: getfield #10 // Field _listContainer:Ljava/util/ArrayList;
4: iload_1
5: invokevirtual #20 // Method java/util/ArrayList.get:(I)Ljava/lang/Object;
8: areturn
}
Compiled from "Main.java"
public class Main {
public Main();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #7 // class MyGenericList
3: dup
4: invokespecial #9 // Method MyGenericList."<init>":()V
7: astore_1
8: new #7 // class MyGenericList
11: dup
12: invokespecial #9 // Method MyGenericList."<init>":()V
15: astore_2
16: aload_1
17: ldc #10 // String hello1
19: invokevirtual #12 // Method MyGenericList.add:(Ljava/lang/Object;)V
22: aload_2
23: iconst_0
24: invokestatic #16 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
27: invokevirtual #12 // Method MyGenericList.add:(Ljava/lang/Object;)V
30: getstatic #22 // Field java/lang/System.out:Ljava/io/PrintStream;
33: aload_1
34: iconst_0
35: invokevirtual #28 // Method MyGenericList.Get:(I)Ljava/lang/Object;
38: checkcast #32 // class java/lang/String
41: invokevirtual #34 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
44: getstatic #22 // Field java/lang/System.out:Ljava/io/PrintStream;
47: aload_2
48: iconst_0
49: invokevirtual #28 // Method MyGenericList.Get:(I)Ljava/lang/Object;
52: invokevirtual #40 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
55: getstatic #22 // Field java/lang/System.out:Ljava/io/PrintStream;
58: aload_1
59: invokevirtual #42 // Method java/lang/Object.getClass:()Ljava/lang/Class;
62: aload_2
63: invokevirtual #42 // Method java/lang/Object.getClass:()Ljava/lang/Class;
66: if_acmpne 73
69: iconst_1
70: goto 74
73: iconst_0
74: invokevirtual #46 // Method java/io/PrintStream.println:(Z)V
77: return
}
38: checkcast #32 // class java/lang/String
var tt3 = new MyGenericList<boolean>();
tt1.getClass() == tt2.getClass() =true