广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java基础开发泛型类的详解
  • 752
分享到

java基础开发泛型类的详解

2024-04-02 19:04:59 752人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言泛型概念泛型类结论前言 在软件开发中,有许多执行过程很类似,许多人使用复制粘贴完成功能,这种做法虽然编译器不会报错,但会使用波浪线给出提示,给以后的维护带来了很大的隐患。这种

前言

软件开发中,有许多执行过程很类似,许多人使用复制粘贴完成功能,这种做法虽然编译器不会报错,但会使用波浪线给出提示,给以后的维护带来了很大的隐患。这种情况开发人员通常根据需要成员抽取公用方法、公用类或使用继承完成,提高了代码的复用。但是,在一些特殊情况(如执行过程中会使用到对象,这些对象操作相同,但具体的模块有有所区别),此时只能使用泛型完成代码的复用。

泛型概念

所谓泛型就是将类型由原来的具体类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。在实际的编程过程中,通过泛型可以定义类型安全数据结构(类型安全),而无须使用实际的数据类型(可扩展)。这能够显著提高性能并得到更高质量的代码(高性能),因为您可以重用数据处理算法,而无须复制类型特定的代码(可重用)

泛型类

在ArrayList类中,ArrayList里面能够放各种对象,如String、Integer、pojo等,可以完成他们的add()、get()等,声明时在声名构造一个数组列表的时候用<>来说明这个容器里面放的是什么类型的东西,如ArrayList< String >代表是String集合,ArrayList就是一个泛型类,在这个类中,存放对象的类型是通过参数定义的,这个类就是泛型类。

由于一组操作的类型不同,我们不得不定义不同的函数,这样会产生大量基本相同的代码。程序员已经习惯了使用集合中的泛型类,实际上泛型更广泛的应用在业务逻辑的处理。泛型类中定义了一组操作,这组操作中完成相同过程。

【例】:在SSM模式下多个模块controller需要完成分页信息获取、按照名称模糊查询及按照行政区划码等条件的查询等功能。每个模块的controller中的需要访问的services对象不同,可以设计一个泛型类来编写相应代码,避免出现大量的复制代码。


public class TemplateController<T extends IBaseService,E> {
    private Logger logger = LoggerFactory.getLogger(getClass());
    private T t;
    //调用时传入T的对象
    public TemplateController(T obj){
        t=obj;
    }

    public R getList(Map<String, Object> params){
        try {
            String pageSize = params.get("pagesize").toString();
            String currPage = params.get("currpage").toString();
            String cName = params.get("CName").toString();
            String regionCode = params.get("regionCode").toString();
            long size = Long.parseLong(pageSize);
            long currPageNo = Long.parseLong(currPage);
            Page<E> page=new Page<>(currPageNo,size);

            //查询省市时代码截断
            String  code = RegionCode.GetRegionCode(regionCode);
            PageUtils data = t.getList(page,cName,code);
            return R.ok().put("data", data);
        } catch (Exception e) {
            logger.debug("传入数据出错"+e.getStackTrace());
            return R.error("传入数据出错"+e.getMessage());
        }
    }
}

TemplateController<T extends IBaseService,E> 为泛型类,

定义了两个类型参数,分别为<T,E>其中T为有界类型,限定为实现了IBaseService接口的类。
IBaseService定义了getList方法,在完成数据提取操作中调用。

IBaseService代码如下:


public interface IBaseService<T> {
    //取分页记录
    PageUtils getList(Page<T> page, String cName, String regionCode); 
}

泛型的使用,ArtBankController继承泛型类,将注入的对象传入泛型类中,执行代码很简单,


@RequestMapping("bank")
public class ArtBankController extends TemplateController<ArtBankService,ArtBankEntity> {

    @Autowired
    private ArtBankService jobArtBankService;

    public ArtBankController(ArtBankService jobArtBankService) {
        super(jobArtBankService);
    }

    //执行代码简单,只需调用父类的getList方法即可
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params){
        return this.getList(params);
    }
 }

业务中很多模块都需要分页、按照名称模糊查询及按照行政区划查询时,实现了代码的复用

结论

大家已经很熟悉在集合类(map、list、set)中使用泛型,但是对于自身业务中的自定义的泛型类使用不多。在开发中只要围绕着可扩展性、可维护性两大主题,善于总结,不难发现泛型类的使用场景

以上就是Java基础开发泛型类的详解的详细内容,更多关于java基础泛型类的资料请关注编程网其它相关文章!

--结束END--

本文标题: java基础开发泛型类的详解

本文链接: https://www.lsjlt.com/news/137937.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java基础开发泛型类的详解
    目录前言泛型概念泛型类结论前言 在软件开发中,有许多执行过程很类似,许多人使用复制粘贴完成功能,这种做法虽然编译器不会报错,但会使用波浪线给出提示,给以后的维护带来了很大的隐患。这种...
    99+
    2022-11-12
  • Java基础泛型详情
    目录一、泛型二、泛型类三、泛型方法四、泛型接口五、类型通配符<>六、可变参数一、泛型 概述: 泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译...
    99+
    2022-11-13
  • Java基础之java泛型通配符详解
    前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。 泛型的本质是参数化类型,也...
    99+
    2022-11-12
  • Java 基础详解(泛型、集合、IO、反射)
    计划把 Java 基础的有些部分再次看一遍,巩固一下,下面以及以后就会分享自己再次学习的一点笔记!不是有关标题的所有知识点,只是自己觉得模糊的一些知识点。1.对于泛型类而言,你若没有指明其类型,默认为Object;2.在继承泛型类以及接口的...
    99+
    2023-05-30
    java 泛型 集合
  • 详解TypeScript的基础类型
    目录布尔类型数字类型字符串类型字符串和数字进行拼接undefined和 null数组类型元组类型枚举类型any类型void类型联合类型总结布尔类型 // 布尔类型--->boo...
    99+
    2022-11-12
  • Java中的类(基础详解)
    文章目录 可以有多个类,但只能有一个public类类 = 字段+方法类的构造函数我们没写构造函数的时候如果我们自己写了构造函数构造函数中 this 的使用 类的修饰符 / 控制符第一...
    99+
    2023-09-01
    java jvm c++
  • Java基础之详解基本数据类型的使用
    一、整型 主要扩展一下不同进制的整型 二进制、八进制、十进制、十六进制 * 二进制 : 0B(数字零+B) 0b(数字零+b) * 八进制 :0(数字零开头) * 十进制 :正常写...
    99+
    2022-11-12
  • Java的类型擦除式泛型详解
    Java选择的泛型类型叫做类型擦除式泛型。什么是类型擦除式泛型呢?就是Java语言中的泛型只存在于程序源码之中,在编译后的字节码文件里,则全部泛型都会被替换为原来的原始类型(Raw...
    99+
    2022-11-12
  • 新手了解java 泛型基础知识
    目录1、什么是泛型2、泛型的使用规则3、泛型应用实例总结1、什么是泛型 ​ 泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类...
    99+
    2022-11-12
  • mysql8.0.19基础数据类型详解
    mysql基础数据类型 mysql常用数据类型概览 ![1036857-20170801181433755-146301178](D:\笔记\mysql\复习\1036857-2017080118143...
    99+
    2022-10-18
  • Java泛型的类型擦除示例详解
    目录前言泛型的类型擦除原则是:1 擦除类定义中的类型参数1.1 无限制类型擦除1.2 有限制类型擦除2 擦除方法定义中的类型参数3 桥接方法和泛型的多态总结参考资料前言 Java泛型...
    99+
    2022-11-12
  • Java 获取泛型的类型实例详解
    Java 获取泛型的类型实例详解Java 泛型实际上有很多缺陷,比如不能直接获取泛型的类型,不能获取带泛型类等。以下方式是不正确的:①.获取带泛型的类的类型Class lstUClazz = List<User>.class...
    99+
    2023-05-31
    java 泛型 类型
  • Java基础之Object类详解
    object类的介绍 object是所有类的直接父类或者是间接父类,为什么这么说呢? 可以查询java8的API帮助文档: 可见在这样的一个类树中,所有的类的根还是Object类 ...
    99+
    2022-11-12
  • Java抽象类(基础详解)
    目录 1.概念 2.抽象类的使用 2.1抽象方法 2.2抽象类 2.3抽象类的使用 2.4注意事项 1.概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法,普通方法,static方法,常量和变量等内容...
    99+
    2023-10-21
    java 开发语言
  • js中基础的数据类型详解
    目录六种数据类1、String2、Number3、Boolean4、Null和undefined5、强制类型转换6、将其他的数据类型转换为Number7、将其他的数据类型转换为Boo...
    99+
    2022-11-12
  • Python基础之数据类型详解
    目录一、整数二、浮点数三、复数四、运算符,优先级以及结合性五、混合类型计算六、除法七、十进制,八进制,十六进制和二进制八、位操作九、集合十、布尔类型十一、其他数值类型一、整数 pyt...
    99+
    2022-11-12
  • javascript基础之数据类型详解
    目录1.数据类型1.1 为什么需要数据类型1.2 变量的数据类型1.3 数据类型分类2. 简单数据类型(基本数据类型)2.1 数字型Number1. 数字型进制2.数字型范围2.2 ...
    99+
    2022-11-12
  • Java 泛型详解(超详细的java泛型方法解析)
    目录2. 什么是泛型3. 使用泛型的好处4. 泛型的使用4.1 泛型类4.2 泛型方法4.3 泛型接口5. 泛型通配符5.1 通配符基本使用5.2 通配符高级使用6. 总结1. 为什...
    99+
    2022-11-12
  • Java 基础--Arrays工具类详解
    目录1、数组转换成字符串2、数组转换成集合(1)asList(2)stream 流操作(3)Collections.addAll()3、对数组进行升序排列4、判断数组是否相等5、所有...
    99+
    2022-11-12
  • Java泛型之类型擦除实例详解
    目录前言泛型是什么?泛型的定义和使用泛型类泛型方法泛型类与泛型方法的共存现象泛型接口通配符?无限定通配符<><extendsT>类型擦除类型擦除带来的局限性泛...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作