题主你理解错了泛型的用法,泛型是 参数化类型
你的 Parent<T> 中的 T 是个声明了一个参数类型 T ,T 是一个 “参数”, 其传入的值为 java 类。
怎么传值?
class Child implements Parent<Map>
在你实现 Parent 接口的时候就是传 参数类型的时候,也就是说 Child 中所有的 T 参数传入的就是 Map
你上面写的代码
class Child<T> implements Parent<T>
Parent<T> 会报错,因为你没有一个叫 T 的java类
Child<T> 的意思是 Cild 这个类也申明了一个 参数类型 T
也就是你在写一个子类继承 Child 的时候需要写上这个 T 具体是什么类型的
class Test extends Child<String>
当然如果你不写具体的类型,那么你申明的泛型就是 Object 类型的。
你也可以在具体使用的时候写上此时的参数类型是什么
Child<Map> c = new Child()
另外,你的 Parent<T> 接口写的是有问题的
你申明了一个 参数类型 T 但是你接口方法却没有使用他,也就是这个 T 参数完全没有用到
你的方法可以改造下
public T clazz()
或者
public void clazz(T t)
那么你在实现 Parent 的时候,其参数类型就是确定的
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…