[Java]泛型知识点v.01

泛型概述

泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。
这个意义就同ArrayList中可以存不同类型的的对象。
泛型提供一个类型参数(type parameters)
ArrayList<String> files = new ArrayList<String>();
尖括号之中的是这个List中的类型 一看就知道这是String的对象
泛型可以定义一个类 一个方法 一个接口

泛型的有效阶段是在编译阶段 运行阶段之后会去泛型的措施
两个同样的List装不同的类型 在运行时 是同一种对象类型

泛型类

一个例子

public class pair<T>
{
	private T first;
	private T second;
	
	private Pair(){first=null; second=null}
	private Pair(T first,T second){this.first;this.second=second}
}

用尖括号引起来的就是一种变量类型T,放在类名之后
E表示集合的元素类型, K V表示表的键与值 ,T或U S表示任意类型

定义泛型类 不一定要传入实参 如果不传入泛型类型实参的话 在泛型类中使用泛型方法或成员变量定义的类型可以为任何类型

泛型接口

泛型接口格式

//接口
public interface Generator<T>{
 public T next();
}


//实现类
class apple<T> implements Generator<T>{
	@Override
	public T next(){
		return;
   }
}

实现类中想用什么类型的参数就把T替换成这个类型.

泛型方法

泛型方法格式

class ArrayAlg{
	public static <T> T getMiddle(T...a){
		return ;
	}
}

//调用一个泛型方法时,在方法名前的尖括号中放入具体的类型   <String> 可以省略
String middle = ArrayAlg.<String>getMiddle("A","B","C");

类型变量的限定

有时需要对类型的变量加以约束
<T extends BoundingType> 说明T是应该被限制的类型
T可以是类或接口 限制的是T是子类或者实现接口的类
<T extends BoundingType & serializable> 用来限制多个限定

核心技术的例子

public class PairTest{
	public static void main(String[] args){
		LocalDate[] birthday={
			LocalDate.of(1906,12,9);
			LocalDate.of(1902,12,9);
			LocalDate.of(1901,12,9);
		};
		Pair<LocalDate> mm = ArrayAlg.minmax(birthday);
	}
}
class ArrayAlg{
	public syatic <T extends Comparable> Pair<T> minmax(T[] a){
		if(a==null || a.length==0) reutrn null;
		T min=a[0];
		T max=a[0];
		for(int i=1;i<a.length;i++){
			if(min.compareTo(a[i])>0) min=a[i];
			if(max.compareTo(a[i])<0) max=a[i];
		}
		return new Pair<>(min.max);
	}
}

上限限定: <? extend E > 代表的是泛型只能是E类型子类或本省
下限限定 :<? super E> 代表的是泛型只能是E类型父类或本身

泛型通配符

只能作为方法的参数使用
? 就是泛型的通配符

public void showKeyValue(Genentor<?> obj){
	System.Out.println(obj[]);
}

这里的?类型实参 不是类型形参是一种真实的类型 如String Integer
代表的是任意数据类型

先写到这里之后会添加

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值