当前位置: 首页 > article >正文

泛型(Java)

1.泛型:

        将数据类型作为参数进行传递。(传递的数据类型必须是引用数据类型)

        本质是参数化类型。

        泛型集合:可以约束集合内的元素类型

        典型泛型集合ArrayList<E>、HashMap<K,V>

        <E>、<K,V>表示该泛型集合中的元素类型泛型集合中的数据不再转换为Object。

2.泛型接口

        泛型接口:

                在接口定义时使用一个或多个类型参数(通常用尖括号<>括起来),这些类型参数可以用于接口的方法签名中,以提供更强的类型安全性和灵活性。

        例:

        当我们对商品类(Goods)和用户类(User)进行增删改查操作,我们需要建立单独Server类来实现这些功能,这样会导致我们建的项目比较多,因此我们将这些功能写在一个接口中,在创建各自的业务类实现该接口。

        Server接口: 

                

        UserServer类实现接口:        

                

        GoodsServer类实现接口:

                

3.泛型类

        泛型类:

                指在类的定义中使用一个或多个类型参数(通常用尖括号<>括起来),这些类型参数可以用于类的成员变量、构造函数和方法中。通过这种方式,泛型类可以处理不同类型的数据,而无需为每种数据类型创建单独的类。

        例:

public class Student<K,V> {
    public K key;
    public V value;
    
    public void set(K k,V v){
        this.key = k;
        this.value = v;
    }
}

public class Test {
    public static void main(String[] args) {
        Student<String,Integer> s = new Student();
        //通过new对象来指定key和value的数据类型
    }
}

4.泛型方法

        泛型方法:

                指在方法的定义中使用一个或多个类型参数(通常用尖括号<>括起来),这些类型参数可以用于方法的返回值类型和参数列表中。

public <T> void checked(T t){
        System.out.println(t+"类型");
}

s.checked("String");//调用checked方法,参数填什么类型,方法的参数类型就是什么类型

5.<? extends T>和<? super T>

        <? extends T>:

                必须是T类或是子类,限制add功能,但可以赋值给list。

        <? super T>:

                =当前类和父类,add当前类及其子类,限制get功能,get调用返回Object。

        List<? extends T> list1 限制了 add 功能,是因为编译器无法确定列表中的实际元素类型,并且为了确保类型安全,它禁止向此类列表添加任何元素(除了 null)。若要添加可向list添加值,再将list赋给list1。

        例:

        ​​​​​​​        

                List<? extends T>限制类型和add方法.

        ​​​​​​​        

                List<? extends T>限制类型和get方法(但返回是Object类型)。

        ​​​​​​​        ​​​​​​​


http://www.kler.cn/a/321550.html

相关文章:

  • WebLogic 介绍
  • 单片机设计电流与温度监控python上位机监控平台设计
  • [DEBUG] 服务器 CORS 已经允许所有源,仍然有 304 的跨域问题
  • 简易入手《SOM神经网络》的本质与原理
  • Java 多线程(三)—— 死锁
  • 安全见闻1-5
  • 【稳定且高效的分治排序 —— 归并排序算法】
  • 【传感器技术】【第1章 传感器与检测技术的理论基础,测量系统,测量分类,误差分析,估计和处理】
  • 25:stm32的低功耗模式
  • FastAPI 第五课 -- 基本路由
  • 63.HDMI显示器驱动设计与验证-彩条实验
  • LeetCode142. 环形链表 II(2024秋季每日一题 28)
  • 付费和免费代理IP工具的区别大吗?
  • 深度学习中的正则化和归一化
  • JWT令牌技术介绍及使用
  • Spring事务和AOP
  • 文件上传、重定向、Gin路由
  • 融云音视频RTC介绍
  • 六、设计模式-6.1、单例模式
  • 显示技术概念极简理解(分辨率、英寸、PPI、DPI)
  • IDEA Dependency Analyzer 分析 maven 项目包的依赖
  • Python 使用selenium 4.25 进行爬虫(1)
  • 一文读懂电路中VCC、VDD、VEE、VSS的区别
  • YOLOv8改进 - 注意力篇 - 引入SK网络注意力机制
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-26
  • 了解网络的相关信息