栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习笔记(泛型)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习笔记(泛型)

1.泛型的介绍

泛型的好处:

  • 编译时,检查添加元素的类型,提高了安全性
  • 减少了类型转换的次数,提高效率

理解:比如使用增强for遍历多个Dog对象组成的ArrayList时,不使用泛型:放入ArrayList时会先转成Object,在取出时还需要转换成Dog;使用泛型:放入和取出时不需要类型转换,提高效率

泛型:一个广泛的类型,可以是任意类型

  1. 泛型又称参数化类型,用来解决数据类型的安全性问题
  2. 在类声明或实例化时只需要指定好需要的具体的类型即可
  3. Java泛型可以保证如果程序在编译时没有发出警告,理解:这样避免了一些运行时才会产生的错误(ClasCastExcep)
  4. 泛型的作用:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值类型,或者是参数类型

2.泛型的语法

泛型的声明

interface 接口 {}

class 类 {}

说明:其中T、K、V不代表值,而是代表类型,任意字母都可以,常用T,是Type缩写

泛型的实例化

要在类名后面指定类型参数的值(也就是一个引用类型),如果不传,就代表是Object类型的

List strList = new ArrayList (); //表示这个strList只能放String类型的值

也可写成:【推荐】

List strList = new ArrayList <>();

3.自定义泛型 1. 自定义泛型类

基本语法

class 类名 {//可以有多个泛型

成员

}

注意细节

普通成员可以使用泛型(属性、方法)

使用泛型的数组不能初始化,理解:因为初始化数组需要指定长度,而类型都不确定,没有办法分配地址长度

静态方法中不能使用类的泛型,理解:因为类泛型是在实例化时确定的,而静态方法是在类加载时就创建了

泛型的类型没有指定时,默认为Object

2. 自定义泛型接口

基本语法

interface 接口名 {//可以有多个泛型

成员

}

注意细节

  • 接口中静态成员也不能使用泛型,注意:接口成员默认是final static的
  • 泛型接口的类型,在继承接口或者实现接口时确定
    • interface IA{}
    • interface IB extends IA{} //继承接口
    • class A implements IA{} //实现接口
  • 泛型的类型没有指定时,默认为Object
3. 自定义泛型方法

基本语法

修饰符返回类型 方法名(参数列表){

}

注意细节

  • 泛型方法可以定义在普通类中,也可以定义在泛型类中
  • 当泛型方法被调用时,类型会确定
  • public void fun (E e){},修饰符和返回值中间没有,所以fun方法不是泛型方法,只是使用了泛型

4.泛型的继承和通配符

泛型不具备继承 List list = new ArrayList(); 是错误的

表示支持任意泛型类型

表示 支持A类及A类的子类,规定了泛型的上限,

表示 支持A类及A类的父类,不限于直接父类,规定了泛型的下限

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号