泛型(generic)概述和基本使用
- A:泛型概述
- 集合边上有一个尖括号,尖括号指的就是泛型.
- 限定集合存储的数据类型,如果加上这个引用数据类型,
- 就告诉你这个集合只能存储该类型对象和该类型的子类对象.
- B:泛型好处
- 提高安全性(将运行期的错误转换到编译期)
- 省去强转的麻烦
- C:泛型基本使用
- D:泛型使用注意事项
- 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)
package com.heima.generic;
import java.util.ArrayList;
import java.util.Iterator;
import com.heima.bean.Person;
public class Demo01_Generic {
public static void main(String[] args) {
//demo1();
//int[] arr = new byte[5]; //数组要保证前后的数据类型一致
//ArrayList<Object> list = new ArrayList<Person>(); //集合的泛型要保证前后的数据类型一致
//ArrayList<Object> list = new ArrayList<>(); //1.7版本的新特性,菱形泛型
ArrayList<Object> list = new ArrayList<>(); //泛型最好不要定义成Object,没有意义
list.add("aaa");
list.add(true);
//demo02();
}
public static void demo1() {
ArrayList<Person> list = new ArrayList<Person>();
// list.add(110);
// list.add(true);
list.add(new Person("张三", 23));
list.add(new Person("李四", 24));
Iterator<Person> it = list.iterator();
while(it.hasNext()) {
//System.out.println(it.next());
//next方法只能调用一次,如果调用多次会将指针向后移动多次
//System.out.println(it.next().getName() + "..." + it.next().getAge());
Person p = it.next();
System.out.println(p.getName() + "..." + p.getAge());
}
}
private static void demo02() {
ArrayList list = new ArrayList();
list.add(110);
list.add(true);
list.add(new Person("张三", 23));
Iterator it = list.iterator();
while (it.hasNext()) {
//Exception in thread "main" java.lang.ClassCastException:
//java.lang.Integer cannot be cast to com.heima.bean.Person
//当试图将对象强制转换为不是实例的子类时候,抛出该异常.
Person p = (Person)it.next();
System.out.println(p.getName() + "..." + p.getAge());
}
}
}