Java泛型知识

本文介绍了Java泛型的概念,包括泛型类、泛型接口和泛型方法,阐述了其带来的类型安全和代码重用的好处。通过示例展示了如何在运行时获取泛型的实际类型信息,以及如何在模板方法模式中利用泛型进行更灵活的处理。
摘要由CSDN通过智能技术生成

泛型

泛型是一种高阶抽象,是将数据的类型参数化。是Java语言的“语法糖”——编码时有泛型,运行时没有泛型,都是Object。

应用场景

泛型类。适用于容器类型,如Bag、List。Java里面有Future<T>, List<T>

泛型接口。

泛型方法。

好处

类型安全。编码时已经限定放入什么,就取出什么,没有ClassCastException。

代码重用。

如何在运行期获取实际类型信息

运行期获取泛型类对应实际类型信息,

/**
 * 获取具体Handler处理的泛型类
 * @return
 */
private Class<T> getConcreteHandlerGenericClass(){
    return (Class <T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}

用途:模板方法模式,父类需要将json格式字符串反序列化成具体的对象,交给子类处理。

abstract class AbsUpReqBusiHandler<T>{
    /**
     * 自定义处理
     * @param t
     * @return
     */
    protected abstract String customHandle(T t);


    public String handle(String jsonParam){
        Class<T> tClz = this.getConcreteHandlerGenericClass();
        T t = JSON.parseObject(jsonParam, tClz);
        String result = this.customHandle(t);
        return result;
    }
}

public class ReportCameraStatusHandler extends AbsUpReqBusiHandler<CameraStatus>{
    
    @Override
    protected String customHandle(CameraStatus CameraStatus) {
        CameraStatus cData = new CameraStatus();
        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值