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

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

目录

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

泛型

定义类、接口、方法时,同时声明了一个或者多个类型变量(如:<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.lryc.cn/news/600717.html

相关文章:

  • 好的编程语言设计是用简洁清晰的原语组合复杂功能
  • 消息缓存系统
  • JavaEE初阶第十一期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(九)
  • 《计算机组成原理与汇编语言程序设计》实验报告二 基本数字逻辑及汉字显示
  • 告别配置混乱!Spring Boot 中 Properties 与 YAML 的深度解析与最佳实践
  • 非定长滑动窗口(持续更新)
  • Netty中AbstractChannelHandlerContext源码分析
  • C++连接MySQL完整教程
  • easy-llm-cli的安装和使用
  • Ubuntu安装node-red
  • 广东省省考备考(第五十七天7.26)——数量、言语(强化训练)
  • 【CTF-PWN】【攻防世界题目pwnstack】python攻击脚本ret(checksec、pwngdb、IDA)(含“/bin/sh“)
  • Traffic Lights set的使用
  • AI Agent开发学习系列 - langchain之LCEL(5):如何创建一个Agent?
  • Ansible列出常见操作系统的发行版,Ansible中使用facts变量的两种方式
  • 定义域第一题
  • InfluxDB Flux 查询协议实战应用(二)
  • 修改site-packages位置与pip配置
  • 网络:应用层
  • docker安装问题汇总
  • 一文速通《多元函数微分学》
  • AI Agent开发学习系列 - langchain之LCEL(4):Memory
  • x86汇编语言入门基础(三)汇编指令篇5 串操作
  • 【架构】Docker简单认知构建
  • JAVA学习-练习试用Java实现“深度优先搜索(DFS):实现八数码问题的解法(最短路径搜索)”
  • LangChain4j低阶+高阶Api+日志配置+监听器+重试机制+超时机制
  • 【LeetCode 热题 100】131. 分割回文串——回溯
  • 算法竞赛阶段二-数据结构(35)数据结构单链表模拟实现
  • Android-广播详解
  • golang实现一个定时引擎,功能包括按照corntab的时间任务实时增加、修改、删除定时任务