出现原因:泛型是在jdk1.5新增的技术,其是为解决代码通用性而出现的。
例如:
假设我现在要处理int、String两个类型的数据,其处理的逻辑是一模一样,即除了类型不同,其他完全一样。
简单的做法即:分别写出int对应的处理代码,string 对应的处理代码,但是这个解决方案很蠢,那有没有更好的解决方案呢?
- 使用object声明类型,因为object是所有类的父类,因此可以接受所有的类型;使用该方法确实能解决上述的问题,但是带来的问题是类型不安全的问题:假设我们现在有一个方法function(List<object> a),这里的a,我们希望是int类型,float类型,但是它同样可以接受String类型,因此会出现类型不安全的问题。那如何解决呢,这就是泛型出现的原因。
- 使用泛型解决:list<T>,先指定T的类型,指定为int,则后面的所有数据都为int型,指定为float,则都为float类型,则不会出现我们没出现的类型,达到类型安全。另外,指定类型以后不需要强制转换,性能更高
- 相比object实现,泛型有两大优势:类型安全、不需要强制转换。