Java泛型总结

最近在学习设计模式相关知识,对泛型相关知识进行总结!!!

1. 为什么要有泛型?

在不使用泛型的时候,比如ArrayList,存储的是Object类型的数据。虽然我们在使用的时候可以强制类型转换,但是如果出现错误,就很严重。

因为,强制类型转换要求程序员明确知道实际参数的引用类型,强制类型转换出现的错误是运行期异常,在编译器无法识别这种错误,只有在运行期检测这种错误。在生产环境中,这种情况就很危险。

那什么是泛型

泛型是JDK1.5引入的新特性,泛型的本质是参数化类型,泛型提供了编译时类型的安全检测机制,该机制允许程序在编译时检测非法的类型,比如要实现一个能够对String、Int、Float、Object进行大小比较的方法,就可以使用泛型。

泛型的好处

  • 类型安全
  • 消除了强制类型的转换

泛型的类型

  • E - Element: 在集合中使用,因为集合中存放的是元素
  • T - Type:表示Java 类,包括基本的类和我们自定义的类
  • K - Key:表示键,比如Map中的key
  • V - Value:表示值
  • N - Number:表示数值类型
  • ?- :表示不确定的java类型

2.泛型方法

泛型方法指将方法的参数类型定义为泛型,以便在调用时接收不同类型的参数。

语法:

修饰符 <T, E, ...> 返回值类型 方法名 (形参列表) {
	//do somethong
}

其中,< T >表示声明此方法为泛型方法,只有声明了< T >的方法才是泛型方法。
举例:

public static <T,E,K> void printType(T t, E e, K k) {
	//do something
}

泛型的具体类型,在调用方法时指定

3.泛型类、接口

泛型类
泛型类是指在定义类时在类上定义了泛型
public class GeneralClass 就定义了一个泛型类

怎么使用?
类名<具体的数据类型> 对象名 = new 类名<具体的数据类型>();
ArrayList< String > list = new ArrayList();
注:在Java1.7以后,后面的<>中的具体的数据类型可以省略不写
比如,ArrayList< String > list = new ArrayList<>();

泛型接口
泛型接口的声明和泛型类的声明类似,通过在接口后面添加类型参数的声明部分来实现。泛型类型的具体类型一般在实体类中进行声明,不同类型的实现类处理不同的业务逻辑。

//定义一个泛型接口
public interface IGeneral<T> {
	public T getId();
}
//定义泛型接口的实现类
public class GeneralIntegerImpl implements IGeneral<Integer> {
	@Override
	public Integer getId() {
		//do something
	}
}

注:泛型类中的成员方法不能被定义为static

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值