java类或接口中的泛型到底什么时候该设置他们的类型,什么时候不该?

一个类实现了一个接口

(1)首先是正常情况下对接口中泛型的实现
图片说明

(2)接着是用T和?来模糊的表示接口的泛型

图片说明

图片说明

(3)接着把子类的泛型也设置成T,这时候又不报错了

图片说明

到底什么时候该设置泛型,什么时候又可以用通配符来代替?

关键是你的T在派生类中是否具体化

具体化

 class IntList extends List<int>

保持泛化

 class LinkedList<T> extends List<T>

再继承或者实现这些接口时就需要指定范型T的具体类型。

在定义接口的时候可以使用通配符
当你要对接口做实现,并只想存储某一类型的对象,可以给定具体的类型