java基础之泛型程序设计

来源:互联网 发布:js取radio选中的值 编辑:程序博客网 时间:2024/05/29 11:35
泛型对于集合类来说尤其有用,如ArrayList就是泛型程序设计的实例,ArrayList有个参数用来指定参数类型。
泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。
类型参数的魅力在于使得程序具有更好的可读性和安全性。
泛型类:具有一个或多个类型变量的类。
public class Pair<T,U>{};
泛型方法可以定义在普通类中,也可以定义在泛型类中,类型变量放在修饰符的后面,返回类型的前面。
public static <T> T getMiddle(T[] a){};
泛型方法的类型变量可以有多个限定,T extends Comparable & Serializable
表示T是Comparable与Serializable的子类型;
虚拟机没有泛型类型对象,所有对象都属于普通类。
无论何时定义一个泛型类型,相应的原始类型都会被自动提供。原始类型就是泛型类型的类型参数被擦去,
并用其第一个限定类型(没有限定类型的用Object)来替换的与泛型类型同名的类型。
Pair<String>,Pair<Manager>擦除类型后就变成Pair的原始类型了。
java泛型和C++模板有很大不同,C++每个模板的实例化产生不同的类型,这一现象称为“模板代码膨胀”。
一个方法覆盖另一个方法时,可以指定一个更严格的返回类型。
虚拟机中没有泛型,只有普通的类和方法;
所有的类型参数都用它们的边界转换;
桥方法被合成为保持多态的;
为保持类型安全性,必要时加入强制类型转换;
不能用基本类型替换类型参数;
禁止使用参数化类型的数组,
不能实例化泛型的类型参数;
不能在静态域或静态方法中引用类型变量;
无论S与T有什么联系,以S,T作为类型参数实例化的泛型类之间都没有什么联系。
泛型类可以扩展或实现其他的泛型类;
通配符类型:
Pair<?extends Emplyee>
类型参数是Employee的子类;
无限定通配符 Pair<?>;
原创粉丝点击