java基础笔记12-泛型详解

泛型的好处

传统方法存在的问题

  • 不能对加入到集合ArrayList中的数据类型进行约束(不安全)
  • 遍历的时候,需要对数据类型进行转换,数据量大的时候会对效率有影响

泛型介绍

  • 泛型:可以表示数据类型的一种类型
  • 泛型又称参数化类型,是JDK5.0新出现的类型,为了解决数据安全性问题。
  • 泛型的作用是,可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值类型,或者是参数类型。
class Person<E> {
	E s; // E表示数据的类型,该类型在定义Person对象的时候指定,即在编译期间,就确定E是什么类型
	public Person(E s) { // E可以是参数类型
		this.s = s;
	}
	public E f() { //E可以是返回值类型
		return s;
	}
}

泛型的语法

泛型的声明

interface 接口名{}
class 类名<K,V>{}

  • 其中,T、K、V不代表值,而是表示引用类型
  • 任意字母都可。常用T表示,是type的缩写。
  • 在给泛型指定具体类型后,可以传入该类型或其子类类型。
  • List list = new ArrayList();默认的泛型是Object。

自定义泛型类

  • 基本语法
class 类名<T,R...> {//...表示可以有多个泛型
成员
}

注意细节

  • 普通成员可以使用泛型(属性、方法)
  • 使用泛型的数组,不能初始化 eg:T[] t = new T[8]是不允许的。
  • 静态方法中不能使用类的泛型,因为静态是和类相关的,类加载时对象还没有创建。所以如果静态方法和静态属性使用了泛型,JVM就无法完成初始化。
  • 泛型类的类型,是在创建对象时确定的
  • 如果在创建对象时没有指定类型,则默认为object

自定义泛型接口

  • 基本语法
interface 接口名<T,R...>{
}

注意细节

  • 接口中静态成员也不能使用泛型
  • 泛型接口的类型,在继承接口或实现接口时确定
  • 没有指定类型,默认为Object类型

自定义泛型方法

  • 基本语法
修饰符 <T,R...> 返回类型 方法名(参数列表){
}

注意细节

  • 泛型方法,可以定义在普通类中,也可以定义在泛型类中
  • 当泛型方法被调用时,类型会确定
  • public void eat(E e) {},修饰符后没有<T,R…>,eat方法不是泛型方法,而是使用了泛型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值