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

认识泛型、泛型类和泛型接口

目录

  • 泛型
    • 泛型类
    • 泛型接口

泛型

定义类、接口、方法时,同时声明了一个或者多个类型变量(如:<E>),称为泛型类、泛型接口、泛型方法、它们统称为泛型

作用:泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力!这样可以避免强制类型转换,以及可能出现的异常

本质:把具体的数据类型作为参数传递给类型变量

泛型类

修饰符 class 类名<类型变量,类型变量,…>{
}

public class ArrayList<E>{...}

如下是自定义泛型类:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多个类型变量

在这里插入图片描述

在这里插入图片描述

变量继承情况

在这里插入图片描述
这里的Cat类必须继承Animal
在这里插入图片描述

package generics;public class Demo2 {public static void main(String[] args) {MyArrayList<String> stringMyArrayList = new MyArrayList<>();stringMyArrayList.add("java");System.out.println(stringMyArrayList.get(0));}
}
package generics;public class MyArrayList<K> {private Object[] arr = new Object[10];private int size;public boolean add(K k){arr[size++] = k;return true;}public K get(int index){Object o = arr[index];return (K) o;}}

泛型接口

修饰符 interface 接口名<类型变量,类型变量,...>{
}

public interface A<E>{}

注意:类型变量建议用大写的英文字母,常用的有:E、T、K、V等

在这里插入图片描述
在这里插入图片描述

package generics;import java.util.ArrayList;public interface Data <E>{void add(E e);ArrayList<E> getData(String name);}
package generics;import java.util.ArrayList;public class Demo4 implements Data<Cat> {@Overridepublic void add(Cat cat) {}@Overridepublic ArrayList<Cat> getData(String name) {return null;}
}

这里也支持变量继承

在这里插入图片描述

http://www.xdnf.cn/news/16374.html

相关文章:

  • 大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(2):LangChain + LlamaIndex 实现
  • Java学习第七十七部分——JVM运行时数据区
  • Java同步锁性能优化:15个高效实践与深度解析
  • 7月26号打卡
  • C++/CLI与标准C++的语法差异(一)
  • ASP.NET Core MVC中taghelper的ModelExpression详解
  • Spring Boot 3 如何整合 MinIO 实现分布式文件存储?
  • MyBatis-Plus 通用 Service 详解:IService 与 CRUD 操作全解析
  • PYTHON从入门到实践-15数据可视化
  • 【资讯】2025年软件行业发展趋势:AI驱动变革,云原生与安全成核心
  • PHP框架之Laravel框架教程:1. laravel搭建
  • 亚马逊测评采购:如何打造安全的环境,技术基础关键
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 70(题目+回答)
  • Avantage6.6下载与安装教程
  • 差模干扰 共模干扰
  • 【隧道篇 / IPsec】(7.6) ❀ 01. 利用向导快速建立IPsec安全隧道 (点对点) ❀ FortiGate 防火墙
  • 详解力扣高频SQL50题之550. 游戏玩法分析 IV【中等】
  • ClickHouse高性能实时分析数据库-消费实时数据流(消费kafka)
  • MySQL进阶学习与初阶复习第三天
  • CSS3知识补充
  • 如何高效合并音视频文件(时间短消耗资源少)(二)
  • ICMPv4报文类型详解表
  • 人形机器人指南(八)操作
  • Xinference vs SGLang:详细对比分析
  • MybatisPlus-18.插件功能-分页插件基本用法
  • Jmeter的元件使用介绍:(五)定时器详解
  • 无需云服务器的内网穿透方案 -- cloudflare tunnel
  • 【AI周报】2025年7月26日
  • 什么是ICMP报文?有什么用?
  • Android Data Binding 深度解析与实践指南