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

泛型的学习

泛型深入

泛型:可以在编译阶段约束操作的数据类型,并进行检查

泛型的格式:<数据类型>

注意:泛型只能支持引用数据类型

//没有泛型的时候,集合如何存储数据//如果我们没有给集合指定类型,默认认为所有的数据类型都是Object类//此时可以在集合添加任意的数据类型//带来一个坏处,我们在获取数据的时候,无法使用他的特有行为//此时推出了泛型,可以在添加数据的时候,将数据类型统一//而且让我们获取数据的时候,也可以进行强转//1.创建集合ArrayList list = new ArrayList<>();//2.添加数据list.add(123);list.add("aaa");System.out.println(list);//3.遍历集合Iterator iterator = list.iterator();while (iterator.hasNext()){Object next = iterator.next();//多态的弊端是无法访问子类的特有功能System.out.println(next);}
}

泛型的好处

同意数据类型。把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来

Java中的泛型都是伪泛型

泛型的细节:

泛型中不能写基本数据类型

指定泛型的具体类型后,传递数据时,可以传入该类类型或者其子类类型

如果不写泛型,类型默认为Object

泛型可以在很多地方进行定义:

类后面        泛型类

当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类

/*当我在编写一个类的时候,不确定类型,那么这个类型就可以定义为泛型类
* */
public class MyGenerics<E> {Object[] obj = new Object[10];int size;/*E: 表示不确定的类型,该类型在类名后面定义过* */public boolean add(E e) {obj[size] = 0;size++;return true;}public E get(int index) {return (E) obj[index];}@Overridepublic String toString() {return Arrays.toString(obj);}
}

    public static void main(String[] args) {MyGenerics<String> list = new MyGenerics<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");//        System.out.println(list);}

方法上面        泛型方法

方法中形参的类型不确定时,可以使用类名后面定义的泛型<E>

public class ListUtil {private ListUtil(){}//类中定义一个静态方法addAll,用来添加多个集合的元素/*参数一:集合参数二:元素*/public static <E> void addAll(ArrayList<E> list,E e,E e2,E e3,E e4){list.add(e);list.add(e2);list.add(e3);list.add(e4);}
}

public class Demo3 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();ListUtil.addAll(list, "a", "b", "c", "d");System.out.println(list);}
}

接口后面         泛型接口

如何使用?

方式1:实现类给出具体类型

方式2:实现类延续泛型,创建对象时在确定

http://www.lryc.cn/news/155103.html

相关文章:

  • L1-061 新胖子公式(Python实现) 测试点全过
  • 潜艇来袭(Qt官方案例-2维动画游戏)
  • 50ETF期权开户平台(0门槛期权开户指南)
  • leaflet · 关于轨迹移动
  • 学生宿舍水电费自动缴费系统/基于javaweb的水电缴费系统
  • 机器人中的数值优化(十三)——QP二次规划
  • 语言深入理解指针(非常详细)(三)
  • 实训笔记8.31
  • el-table 垂直表头
  • B081-Lucene+ElasticSearch
  • 机器学习:塑造未来的核心力量
  • RK3568-i2c-适配8010rtc时钟芯片
  • Spring Security - 基于内存快速demo
  • 6 | 从文本文件中读取单词并输出不重复的单词列表
  • 【微信小程序篇】- 多环境(版本)配置
  • ssh配置(一、GitLabGitHub)
  • 开了抖店后就可以直播带货了吗?想在抖音带货的,建议认真看完!
  • 【深度学习实验】数据可视化
  • 【Golang】函数篇
  • 在ubuntu上安装ns2和nam(ubuntu16.04)
  • SpringCloudAlibaba之Sentinel介绍
  • 苹果微信聊天记录删除了怎么恢复?果粉原来是这样恢复的
  • JVM的故事——虚拟机字节码执行引擎
  • 设计模式之适配器与装饰器
  • 服务器数据恢复- Ext4文件系统分区挂载报错的数据恢复案例
  • 19-springcloud(上)
  • 前端基础---HTML笔记汇总一
  • 智汇云舟亮相中国安防工程商集成商大会
  • 使用 Sealos 在离线环境中光速安装 K8s 集群
  • 算法-模拟