java泛型的一些思考

为什么需要泛型

在Java中其实Object这个类已经可以解决大部分的泛型问题了,那么现在为什么还需要泛型了,一种说法是为了安全,因为在编译期使用泛型的话便可以基本确定这个参数的类型了,但是使用Object的话,由于Object是所有类型的超类,所以这会给代码造成一定的安全性问题。

1
2
3
4
5
6
7
public void testList(T t){
List<Object> list =new ArrayList<>();
List<T> list1 =new ArrayList<>();
list.add(1);
list.add("1");
list.add(t);
}

在上面的例子中,list1由于其类型是T,这就会导致在向list1中插入数据的时候只能是泛型T,但是对于list而言,由于Object是所有类的超类,那么这个list就可以插入任何值了,所以这就导致了一些安全问题

关于Java的协变和逆变:

阅读更多