关于泛型需要注意的点

150 阅读1分钟

继承或者实现某个带泛型类的时候,不能直接在继承的泛型类上给定一个具体泛型,不然会抛出异常java.lang.class cannot be cast to java.lang.reflect.ParameterizedType。 比如下面我们定义两个个泛型类:

public abstract class SimpleCallBack<T> {
  .......
}
abstract class BaseCallBack<T> : SimpleCallBack<T>() {
....
}

BaseCallBack 继承SimpleCallBack这个泛型类,如果直接向下面这样写的话就会抛出异常:

abstract class BaseCallBack: SimpleCallBack<String>() {
....
}

具体什么原因还没找到,有时间再去仔细研究一下。