泛型
1、泛型的定义
泛型:通过参数化类型来实现在同一份代码上操作多种数据类型
2、泛型分类
- 泛型类
- 泛型方法
3、泛型类定义的演示
// 1. 尖括号 <> 是泛型的标志
// 2. E 是类型变量(Type Variable),变量名一般要大写
// 3. E 在定义时是形参,代表的意思是MyArrayList最终传入的类型,但现在还不知道
public class MyArrayList<E> {
private E[] array;
private int size;
}
//泛型类可以有多个类型变量,使用,隔开
4、泛型是作用在编译期的一种机制,在运行期间没有泛型的概念
5、泛型类的使用
// 定义了一个元素是Book引用的MyArrayList
MyArrayList<Book> books = new MyArrayList<Book>();
books.add(new Book());
// 会产生编译错误,Person类型无法转换为Book类型
books.add(new Person());
// 不需要做类型转换
Book book = book.get(0);
// 不需要做类型转换
// 会产生编译错误,Book类型无法转换为Person类型
Person person = book.get(0);
6、泛型总结
- 泛型是为了解决某些容器、算法等代码的通用性而引入,并且能在编译期间做类型检查。
- 泛型利用的是 Object 是所有类的祖先类,并且父类的引用可以指向子类对象的特定而工作。
- 泛型是一种编译期间的机制,即 MyArrayList 和 MyArrayList 在运行期间是一个类型。
- 泛型是 java 中的一种合法语法,标志就是尖括号 <>