泛型
泛型本质上讲是指参数化类型。
- 参数化类型允许创建这样一些类、接口或方法,其所操作的数据类型被指定为一个参数。
- 即类、接口、方法中所用的变量类型由一些参数所指定。
- 我们把这样的参数叫做类型参数。
public class GenericsDemol{
public static void main(String[] args){
//如果没有集合指定类型,默认为所有的数据类型都是Object类型。此时可以往集合添加任意的数据类型。
//带来一个坏处:再获取数据的时候,无法使用它的特有行为。
//此时推出泛型,可以再添加数据的时候把类型进行统一,而且在获取数据的时候,无需强转。
//1. 创建集合的对象
ArrayList list = new ArrayList();
//2. 添加数据
list.add(123);
list.add("aaa");
list.add(new Student("zhaangsan",123));
//3. 遍历集合获取里面的每一个元素
Iterator it = list.iterator();
while(it.hasNext()){
Student str = (Student) it.next();//强转成学生类
//多态的弊端时不能访问子类的特有功能
//obj.length();
//str.length();
System.out.println(str);
}
## 泛型类的声明
class 泛型类名称<泛型列表>
- 泛型列表的泛型可以实成员变量的类型,方法的类型即局部变量的类型
```java
class Chorus <E, F> {
void makeChorus(E person,F yueqi){
yueqi.toString();
person.toString();}
}
- 使用泛型类声明一个对象
Chorus <Student, Button> model;
Model = new Chorus <Student, Button>();
当编写一个类的时候,如果不确定类型,那么这个类就可以定义
public class MyArrayList<E>{
Object[] obj = new Object[10];
int size;
//E:表示不确定的类型,该类型在类名后面已经定义过了。
//e:形参的名字,变量名
public boolean add<E e>{
obj[size] = e;
size++;
return tru