Java学习笔记---泛型

一、序言

一看到泛型就想到一对尖括号?
JDK5以后的JDK的集合中就经常使用,例如Collection collections

然而JDK5中刚刚出现集合框架的时候,集合框架中的变量都是Object,因为系统不知道用户要使用什么类型的变量。
自从JDK5后,引入了“参数化类型(parameterized type)”的概念。有点像C++中的模版类,当然C++中也有泛型。
参数化类型(parameterized type):允许程序在创建对象的时候,指定对象所包含的变量类型。
JDK7以及以后在构造函数的尖括号中可以不添加变量类型。
######注意:对应的编译器也要求是比较新的。早期版本的eclipse就会报错。

二、正文

####1、泛型使用的案例

List l= new ArrayList();

三、 深入理解

泛型的本意是在程序运行的时候 动态生成某个类型的子类型。例如ListList的子类型。可以看作在程序运行的时候 把所有的E替换成String类型。

1、 继承的时候,子类要按照实际的类型进行重写或者使用

2、

		ArrayList ex2 = new ArrayList();
		List ex1 = new ArrayList();
		List ex2 = new ArrayList();
		System.err.println(ex1.getClass() == ex2.getClass());//结果是ture
		System.err.println(ex2.getClass() == ex3.getClass());//结果是ture

可以看出替换变量后类任然不改变

你可能感兴趣的:(java)