JAVASE-泛型

集合可以存储不同的数据类型
ArrayList list = new ArrayList(); 可以指定集合中只能存String类型,<>这就是泛型
在这里插入图片描述
在这里插入图片描述
Collection E element:元素
Comparator T type

泛型类和 泛型方法

· 当类中要操作的引用数据类型不确定时,可以定义泛型类来完成(早期定义Object类来实现)。
· 泛型类定义的泛型,在整个类中都有效,如果被类中的方法使用,那么当泛型类的对象明确要操作的具体类型后,方法所要操作的对象类型已经固定了。

Class Utils<QQ> // 泛型类
{
	private QQ q;
	private void setObject(QQ q){  // 泛型方法
		this.q = q;
	}
	private QQ getObject(){
		return q;
	}
}

· 为了让不同方法可以操作不同类型,而且类型还不确定,可以将泛型定义在方法上。

Class Demo {
	public <T> void show(T t){
		sopt("show" + t.toString());
	}
	public <Q> void pei(Q q){
		sopt("pei" + q.toString())
	}
}

静态方法泛型

· 静态方法不可以访问类上定义的泛型
在这里插入图片描述
· 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

public static <W> void method(W w){
	sopt("method" + w);
}

注意:泛型 一定要放在返回值类型的前面,修饰符的后面
在这里插入图片描述

泛型定义在接口上

Interface Ans <T> {
	void show(T t);
}

class Ansal implements Ans<String> {
	public void show(String str){
		soup("show" + str);
	}
}

class Ansll<T> implements Ans<T> {
	public void show(T str){
		soup("show" + str);
	}
}

泛型限定

?是通配符,或者占位符
和<?>区别不大
在这里插入图片描述
· T t = it.next(); ?不能这么写
· Student类继承Person类
不可以 ArrayList li = new ArrayList(); 也不可以ArrayList li = new ArrayList();两边类型必须一样。
在这里插入图片描述

<? extends Person> 是传说中的泛型限定,只能打印Person和Person的子类,是上限限定类型。 <?>是只能打印任意一个类型

在这里插入图片描述

<? super E>:可以接受E类型或者E的父类型,是下限限定类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值