黑马程序员——java基础——泛型
来源:互联网 发布:信用信息数据采集制度 编辑:程序博客网 时间:2024/06/14 09:58
一, 什么是泛型
泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Java中的泛型是Java5.0出现一种安全机制,是一种编译时期的技术。
二,怎么表示泛型
Java中用<>来表示泛型,<> 中间的内容通常是用单个大写字母来表示比如:<T> 。<qq,tt>这中写法也不错只不过阅读性差。
三, 泛型中的基本术语
以ArrayList<E>为例 ,<>念着typeof, ArrayList<E>中的E称为类型参数变量,ArrayList<Integer> 中的 Integer成为实际参数类型,整个ArrayList<E>称为泛型类型 , 整个 ArrayList<Integer>称为参数化的类型 。
四,泛型的好处
A:它的出现提高了程序的安全,让程序的一些在运行时期可能出现的问题,转移到编译时期。(ClassCastException)
B:避免了强制装换的麻烦。
下面用一个例子来阐述泛型的优点
//创建一个arraylist集合ArrayList list=new ArrayList();//往集合中添加元素list.add("aa");list.add("bb");list.add("cc");list.add("cc");list.add(new Integer(2));//遍历集合for(Iterator it=list.iterator();it.hasNext();){String str=(String)it.next();System.out.println(str);}
直接运行上面的代码肯定会抛出异常(java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String)我们很容易就找出抛异常的地方 ,我们往集合中添加的第五个元素一个Integer 类的 而在下面遍历的时候我们把强制装换成String所以就会抛异常。这样的代码在编译的时候没有问题而在运行时就会出现问题,所以安全性不高,并且需要我要我们去强转。(强制装换的原因 在Java1.4之前没有泛型机制,其实ArrayList 集合的add 方法参数的类型是Object类型,并且 通过迭代器的next()的返回值的类型 也是Object 类 ,所以就需要我们进行向下转型。
到了Java5.0 出现了泛型机制
//创建一个arraylist集合ArrayList<String> list=new ArrayList<String>();//往集合中添加元素list.add("aa");list.add("bb");list.add("cc");list.add("cc");list.add(new Integer(2));//遍历集合for(Iterator<String> it=list.iterator();it.hasNext();){System.out.println(it.next());}
public class Tool<E> {public E test(E e){E t=e;return t;}}
public <Q> void test(Q q){[....]}
public interface Tool<T> {public void test(T t); }
public void test(Collection<?> e){//.......for(Iterator<?> it=e.iterator();it.hasNext();){//这种用法是错误的? t=it.hasNext();}}E:子类在实现带有泛型的接口的时候 子类可以丢弃接口的泛型也可以继续使用接口的泛型。
- 黑马程序员—JAVA基础
- 黑马程序员—Java基础
- 黑马程序员:Java基础——泛型
- 黑马程序员——JAVA基础---泛型
- 黑马程序员——Java基础---泛型
- 黑马程序员——Java基础---泛型
- 黑马程序员 Java基础——泛型
- 黑马程序员—Java基础:初识Java
- 黑马程序员——java编程基础
- 黑马程序员——Java编程基础
- 黑马程序员——java编程基础
- 黑马程序员——JAVA基础编程
- 黑马程序员——java基础
- 黑马程序员——java基础概述
- 黑马程序员——java基础小结
- 黑马程序员——java编程基础
- 黑马程序员——Java基础
- 黑马程序员——Java基础---多线程
- 进程遍历
- 简单安卓图片自动轮播
- 汉诺塔Python简单实现!
- Android应用安全现状与解决方案(学习资料)
- Windows IOCP
- 黑马程序员——java基础——泛型
- html table表数据转Json格式
- HTML5实现歌词同步
- win8 64位系统下破解loadrunner11失败
- 简单选择排序
- mysql关键字distinct笔记
- APP开发小知识点
- XMPP协议的原理介绍
- arcGIS消除零碎图版