1.关于泛型类与泛型方法
自定义泛型类:最终类型在new对象时确定
@Data
Class Person<T>{
private String name;
private T info;
}
自定义泛型方法:最终类型在调用方法时确定
class GenericMethod{
public <T> T test(T t){
return t;
}
}
public class GenericMethodTest {
public static void main(String[] args) {
GenericMethod method = new GenericMethod();
String abc = method.test("abc");
//对于基本数据类型,最终得到的是其包装类(泛型方法得到的是对象)
Double test = method.test(333.33);
//没有类型时,默认得到的是Object
Object test1 = method.test(null);
}
2.在使用ArrayList时,有时需要将集合转为数组:
需要调用泛型方法指定类型,否则获取到的是Object类型。
虽然在ArrayList创建时已经指定了泛型类型,但是直接调用toArray()方法获取到的仍然是Object[]类型数组,这个属于历史原因。
(ArrayList 是先有的,泛型概念是后面增加的,为了弥补上面这个问题,新增的 toArray(T[] a) 泛型方法。
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
for (int i = 0; i < 8; i++) {
arrayList.add((int)(Math.random()*10));
}
System.out.println(arrayList);
//历史原因,无法泛型
Object[] objects = arrayList.toArray();
//public <T> T[] toArray(T[] a) { ArrayList中的泛型方法
// 新方法 支持泛型
Integer[] integers = arrayList.toArray(new Integer[]{});
}