JAVA SE基础提要--10:泛型

0x01.泛型的概念

泛型:可以在类或方法中预支地使用未知的类型。
说明:一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。
优点

  • 1.将运行时期的ClassCastException,转移到了编译时期变成了编译失败。
  • 2.避免了类型强转的麻烦。

0x02.泛型的具体使用

使用含有泛型的类:

定义格式:

修饰符 class 类名<代表泛型的变量> {  }

在创建对象的时候确定泛型
例如:

public class ATClass<AT> {
	//没有AT类型,在这里代表 未知的一种数据类型 未来传递什么就是什么类型
	private AT at;
	public void setAT(AT at) {
		 this.at = at;
	}
	public MVP getAT() {
	 	  return at;	
 	}
}
//具体使用:
	ATClass<String> obj=new ATClass<>();
	obj.setAT("这是字符串作为泛型确定型的使用")
	ATClass<Integer> obj1=new ATClass<>();
	obj1.setAT(1);

使用含有泛型的方法:

定义格式:

修饰符 <代表泛型的变量> 返回值类型 方法名(参数){  }

调用方法时,确定泛型的类型
例如:

public <BT> void show(BT bt) {
	System.out.println(bt);
}
//具体使用:
	ATClass<String> obj=new ATClass<>();
	obj.show("泛型确定为字符串类型");

使用含有泛型的接口:

定义格式:

修饰符 interface接口名<代表泛型的变量> {  }

可以定义类时确定泛型的类型
也可以始终不确定泛型的类型,直到创建对象时,确定泛型的类型
具体使用与上面一致。

0x03. 泛型通配符

说明:

  • 泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符。
  • 一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。
  • 泛型不存在继承关系

受限泛型:
JAVA的泛型中可以指定一个泛型的上限下限
泛型的上限

  • 格式类型名称 <? extends 类 > 对象名称
  • 意义只能接收该类型及其子类

泛型的下限

  • 格式类型名称 <? super 类 > 对象名称
  • 意义只能接收该类型及其父类型

例如: Number是Integer的父类。

扫描二维码关注公众号,回复: 9391607 查看本文章
// 泛型的上限:此时的泛型?,必须是Number类型或者Number类型的子类
public static void pratice1(Collection<? extends Number> coll){}
// 泛型的下限:此时的泛型?,必须是Number类型或者Number类型的父类
public static void practice2(Collection<? super Number> coll){}
本章结束。
发布了50 篇原创文章 · 获赞 35 · 访问量 1316

猜你喜欢

转载自blog.csdn.net/ATFWUS/article/details/104396365