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

JAVA 集合进阶 泛型类、泛型方法、泛型接口

1 泛型类

使用场景:当一个类中,某个变量的教据类型不确定时就可以定义带有泛型的类

1.1 格式

此处E可以理解为变量,但是不是用来记录数据的,而是记录数据的类型,可以写成:T、E、K、V 

1.2 例子

泛型类

package com.bjpowernode.test16;import java.util.Arrays;public class MyArrayList <E>{Object[] obj = new Object[10];int size;//E:表示是不确定的类型。该类型在类名后面已经定义过了。//e:形参的名字,变量名public boolean add(E e){obj[size++] = e;return true;}public E get(int index){return (E)obj[index];}@Overridepublic String toString() {return Arrays.toString(obj);}
}

测试类

package com.bjpowernode.test16;public class test {public static void main(String[] args) {MyArrayList<String> list = new MyArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");System.out.println(list);System.out.println(list.toString());}
}

运行结果:

2 泛型方法

方法中形参类型不确定时

  • 方案①:使用类名后面定义的泛型                            所有方法都能用
  • 方案②:在方法申明上定义自己的泛型                     只有本方法能用

2.1 格式

2.2 练习

定义一个工具类:ListUtil
类中定义一个静态方法addAll,用来添加多个集合的元素

泛型方法

package com.bjpowernode.test16;import java.util.ArrayList;public class ListUUitl {private ListUUitl(){}//类中定义一个静态方法addAll,用来添加多个集合的元素。public static<E> void addAll(ArrayList<E>list, E e1, E e2, E e3, E e4){list.add(e1);list.add(e2);list.add(e3);list.add(e4);}}

测试类

package com.bjpowernode.test16;import java.util.ArrayList;public class test2 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();ListUUitl.addAll(list, "aaa","bbb","ccc","ddd");System.out.println(list);ArrayList<Integer> list2 = new ArrayList<>();ListUUitl.addAll(list2,111,222,333,444);System.out.println(list2);}
}

运行结果:

3 泛型接口

3.1 格式

3.2 如何使用一个带泛型的接口

方式1:实现类给出具体类型
方式2:实现类延续泛型,创建对象时再确定

参考链接:

集合进阶-08-泛型类、泛型方法、泛型接口,更新到最后_哔哩哔哩_bilibili

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

相关文章:

  • 【算法训练营Day03】链表part1
  • 随笔笔记记录5.28
  • 说一说SAP系统从Non-Unicode到Unicode的演化
  • 674SJBH校园外卖订餐系统V3
  • OpenLayers 图形绘制
  • 卫星地图 App 的实测体验深度解析
  • DeepSeek 赋能工业互联网:设备预测性维护的智能革新之路
  • 突破铁芯CT局限:罗氏线圈的“无磁饱和”技术深度解读
  • 身份证信息OCR识别提取
  • NIO知识点
  • ORM 框架的优缺点分析
  • QSS 的选择器
  • 端午时节,粽香四溢
  • 国密算法简述
  • 【DAY34】GPU训练及类的call方法
  • 从门店到移动端:按摩服务预约系统的架构演进与实践
  • 32、请求处理-【源码分析】-各种类型参数解析原理
  • Spring,SpringMVC,SpringBoot
  • RFID技术助力托盘运输线革新
  • grep/awk/sed笔记
  • 超高频RFID读写器天线分类及应用场景
  • 深入理解用于中断控制的特殊寄存器
  • pm2守护进程管理器
  • Word2Vec 生成词向量
  • 【python基础知识】列表简介
  • 会议室钥匙总丢失?换预约功能的智能门锁更安全
  • 如何做好一份技术文档:从信息孤岛到知识图谱的进阶之路
  • 国芯思辰| SC751X替换OPA2354/OPA354/OPA4354可调激光器应用方案
  • 网络编程4-epoll
  • 多模态大语言模型arxiv论文略读(101)