最新在抽取公共方法的时候,遇到了需要使用泛型的情况,但是在搜索了一圈之后,发现大部分博客对于继承都说的不太清楚,所幸还有那么一两篇讲的清楚的,在这里自己标记下。

以我自己用到的代码举例,在父类中使用了泛型的声明,代码如下:

public abstract class AlarmRender<T> {
    /**
     * @param serviceDataList serviceDataList
     * @param renderParameter renderParameter
     * @return list
     */
    public abstract List<T> renderServiceAlarm(List<T> serviceDataList, AlarmRenderParameter renderParameter);
}

  

这一块大部分博客都写的大同小异,没有啥区别,但是在继承中有一点需要注意的,大部分博客都没有提到;

子类在继承有泛型的父类时有两种情况,1.继承时,子类继续保持泛型化;2.继承时,子类不再泛型化

子类保持泛型化这里不多讲,大部分博客都说了这种情况,我遇到的是需要子类不再泛型化,每个子类有自己的类型,使用时也很简单,将具体类型声明清楚即可,但是大部分博客没有讲清楚这两点,代码如下:

public class ObsAlarmRender extends AlarmRender<FsoVo> {
    @Override
    public List<FsoVo> renderServiceAlarm(List<FsoVo> serviceDataList, AlarmRenderParameter renderParameter) {
          //业务代码      
    }
}

  

 

posted on 2019-07-05 14:48  dbave  阅读(1159)  评论(0编辑  收藏  举报