泛型
2019-04-01 / JAVA / 900 次围观 / 0 次吐槽 /泛型的概述
泛型的作用:把类型明确的工作提前到创建对象或者调用方法的时候。
泛型是一种参数化类型,把类型当作参数一样的传递来明确集合的元素类型
泛型的好处
提高安全性(将运行期的错误转换到编译期)
省去强转的麻烦
泛型基本使用
声明集合泛型的格式List<Student> list = new ArrayList<Student>();
<>中必须放的是引用类型数据
泛型迭代器
Iterator<String> iterator;
Iterator<Student> iterator;
泛型注意事项
1.默认声明一个泛型集合,前后类型要一至
List<Student> list1 = new ArrayList<Student>();
2.这样声明前后类型不一至是不可以的
//不可以前面写父类,后面写子类
//List<Object> list2 = new ArrayList<Student>();
3.集合泛型的声明,可以只声明前面的泛型,jdk1.7的新特性:菱形泛型,开发时建议还是写成前后一至
//1.6 1.5的jdk不能写菱形泛型
List<Student> list3 = new ArrayList<>();
4.集合声明的泛型,代表此类或者子类都可以成为集合的元素,eg: Person -> Student
List<Person> list4 = new ArrayList<Person>();
5.声明的泛型类型一定是引用数据类型(类)
//泛型是基本数据类型
//List<int> list6 = new ArrayList<int>();
List<Float> list6 = new ArrayList<Float>();
泛型的由来
解决类型转换异常
声明泛型类和泛型方法
声明一个泛型类
class Tool<T>
声明泛型方法格式: public 返回类型(T) 方法名(泛型类型T 变量名)
声明一个泛型方法(无返回值,有泛型参数)
public void print(T t)
声明一个泛型方法(有返回值,有参数)
public T get(int index)
声明一个泛型属性
private T o;
泛型高级之通配符
泛型通配符<?> 一般在声明变量类型时使用
任意类型,如果没有明确,那么就是Object以及任意的Java类了
//打印集合对象
public static void print(List<?> list){
System.out.println(list);
}
? extends E 【E 表示父类,?表示子类】-表示泛型固定上边界
* addAll(Collection<? extends Person> c)
* 添加的集合可以是 Person类型【List<Person> list4】,或者是Person的子类【List<Student> list6】
List<Person> list5 = new ArrayList<Person>();
* addAll(Collection<? extends Student> c)
* 添加的集合可以是 Student类型【List<Student> list6】,或者是Student的子类【List<Person> list4】
List<Student> list5 = new ArrayList<Student>();
? super E 【?表示父类,E 表示子类】 -表示泛型固定下边界
ArrayList.sort(Comparator<? super Student> c)
【? extends E 】针对存的操作
【? super E】 针对取的操作*/
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.