Java泛型的理解和用法
2016-03-14 15:38
549 查看
泛型的由来:
泛型的使用:
1.定义泛型类
2.定义泛型类中泛型方法
这里的泛型类中的泛型必须和类定义的泛型保持一致,如果不一致则需要在方法中定义自己泛型
3.泛型接口的使用
4.泛型通配符?
非受限统配类型 ?表示任何一种对象类型 ,等价于? extends Object。
受限通配类型 ? extends T ,表示T或T的一个未知子类型。
下限通配 ?super T,表示T或T的一个父类型。
利用泛型自定义栈
注:!!!
泛型不能使用new E(),不能使用泛型类型参数创建对象。
不能使用new E[],不能使用泛型创建数组
在静态方法中不允许类的参数是泛型类型
异常类不能是泛型
在java开发中,泛型和集合框架结合起来创建对象会比较的常用。泛型是指参数化类型的能力,它可以定义类,方法,接口等。随后在编译的过程中,由编译器自动的转换成具体的类型替换它。 之所以使用泛型是因为早期的泛型是Object来使用得,但是在实际的使用时,在类型的转换上存在隐患。比如我们定义了一个Object,实例的时候将它转换成String,但是在接收的时候我们又接受为int型,这样在程序的代码片中是不会报错的,但是在执行的过程中就会报错。所以java提供泛型来解决安全问题。
泛型的使用:
1.定义泛型类
public class Toll<E>{ }
2.定义泛型类中泛型方法
public class Toll<E>{ private E e; public E getE(){ return e; } public void setE(E e){ this.e = e; } }
这里的泛型类中的泛型必须和类定义的泛型保持一致,如果不一致则需要在方法中定义自己泛型
public<T> void show(T t){ System.out.println(t); }
3.泛型接口的使用
interface Inter<T>{ public void show(T t); }
4.泛型通配符?
非受限统配类型 ?表示任何一种对象类型 ,等价于? extends Object。
受限通配类型 ? extends T ,表示T或T的一个未知子类型。
下限通配 ?super T,表示T或T的一个父类型。
利用泛型自定义栈
/** 1. 2. @author hp 3. 创建一个空栈 4. @param <E> */ public class GenericStack<E> { private ArrayList<E> list = new ArrayList<>(); public GenericStack() { } /* * 栈的元素个数 */ public int getSize(){ return list.size(); } /* * 返回栈顶元素 */ public E peek(){ return list.get(getSize()-1); } /* * 向栈的顶端添加一个元素 */ public void push(E o){ list.add(o); } /* * 弹出栈顶元素并删除这个元素 */ public E pop(){ E o = list.get(getSize()-1); list.remove(getSize()-1); return o; } public boolean isEmpty(){ return list.isEmpty(); } }
注:!!!
泛型不能使用new E(),不能使用泛型类型参数创建对象。
不能使用new E[],不能使用泛型创建数组
在静态方法中不允许类的参数是泛型类型
异常类不能是泛型
相关文章推荐
- java泛型笔记-为什么泛型类型不能是基本类型
- spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
- 做一个合格的程序猿之浅析Spring IoC源码(十一)Spring refresh()方法解析后记1
- java学习之一种dom解析
- eclipse 配置utf-8编码格式
- java Socket用法详解
- Java源码阅读之LinkedList
- jdk1.5~1.8特性
- Android+struts2+json方式模拟手机登录功能
- Android+struts2+json方式模拟手机登录功能
- Spring MVC配置Velocity
- Android+struts2+json方式模拟手机登录功能
- Eclipse中SVN路径中中文显示错乱问题小窍门
- Java核心技术学习笔记第五章
- eclipse 连接 hadoop集群
- Java基本数据类型
- JAVA测试题
- spring在普通类中获取session和request,springsession
- 用java写一个双向链表
- win10下eclipse中打开图片乱码解决