泛型汇总(一)
1、泛型指的是不确定类型的元素,泛型可以写到方法上面,也可以写到类上面;
如写到类上面的泛型;泛型可以继承固定类bean对象
public abstract class AbstractOrderFacade<TCreate extends IBaseOrderParams, TModify extends IModifyDraftOrderParams, TSubCreate extends AbstractCreateSalesOrderParam> {
......
}
2、泛型擦除
在泛型的使用过程中,有个现象需要特别注意一下,那就是泛型擦除,泛型仅存在于编译时,JVM中是不存在泛型的,我们可以将上述ArrayList.class文件进行反编译,可以通过jad反编译工具,也可以通过网上的在线工具均可哈。 反编译后源码:
//反编译后的代码 package com.javabuild.server.pojo; import java.util.Arrays; class Arraylist { private Object[] elementData; private int size = 0; public Arraylist(int initialCapacity) { this.elementData = new Object[initialCapacity]; } public boolean add(Object e) { ++this.size; this.elementData[this.size] = e; return true; } Object elementData(int index) { return this.elementData[index]; } public Object[] toArray(Object[] a) { return (Object[])Arrays.copyOf(this.elementData, this.size, a.getClass()); } public static void printArray(Object[] inputArray) { Object[] var1 = inputArray; int var2 = inputArray.length; for(int var3 = 0; var3 < var2; ++var3) { Object element = var1[var3]; System.out.printf("%s", new Object[]{element}); } } }
可以发现Java中的泛型均被Object替换,因为在JVM解析的过程中会进行泛型的擦除操作。
郭慕荣博客园