文章列表
.NET泛型,涉及到CLR和内存模型的修改;JAVA,直接在bytecode层完事
JAVA的泛型,绝对的语法糖,高级编译后,都擦除了类型。比如ArrayList<Apple>的add方法,仍然是Method java/util/ArrayList.add:(Ljava/lang/Object;)Z。get方法,仍然是Method java/util/ArrayList.get:(I)Ljava/lang/Object;,同时增加了强制转换语句checkcast。用javap很容易发现。
JAVA定义个泛型类,类型还是被擦除。比如
1. public void set(K ...