泛型是jdk1.5以后出现的新特性, 用于解决安全问题的, 是一个安全机制, 提高了程序的安全性;
泛型将运行期遇到的问题转移到了编译期, 是编译期状态, jvm根本就不知道有泛型
省去了类型强转的麻烦;
泛型类的出现优化了程序设计;
大多数情况下, 我们对集合不会添加多种类型的元素, 所以我们希望可以像数组一样, 在定义集合时, 指定可以装载的元素类型, 这时我们就要用到泛型
java中用到泛型最多的地方就是集合;
集合类都有至少一个类型变量,
当在创建集合对象时, 就可以给集合的类型变量赋值, 如ArrayList<String> al = new ArrayList<String>( );
一旦给集合的类型变量赋值, 那么集合内部所有使用类型变量的地方都要使用赋值的变量, 例如给类型变量赋值String, 那么集合所有使用类型变量的地方都会被指定的值替换
示例代码:
public class Demo {
public static void main(String[] arg) {
// 因为定义了泛型,我这里创建对象时指定泛型的具体的类型变量为String类型
Utils<String> u = new Utils<String>();
u.fun("a");// 调用fun方法参数为String类型, 为什么呢?因为我指定了泛型的类型变量为String
// 那么, 这个时候只要是用到QQ 类型的地方,都必须是String类型
// u.fun(5);//这个代码就会报错, 因为我泛型指定的 是String类型,
// fun方法的参数列表中的形参因为是泛型, 那么必须得传递String类型的参数, 这里传递5,不是String类型的,那么就会报错
}
}
class Utils<QQ> // 这里的QQ.你可以理解为Object
{
public void fun(QQ q) {
System.out.println(q);
}
}
|