尚硅谷java学习笔记——8.java泛型(Generic)
来源:互联网 发布:冬不拉教程软件 编辑:程序博客网 时间:2024/05/28 01:34
一、为什么要用泛型?
JDK1.5新加入的
1.解决元素存储的安全性问题。
2.解决获取数据元素时,需要类型强转的问题
把一个集合中的内容限制为一个特定的数据类型,这就是generics背后的核心思想。
二、使用泛型
1、泛型的声明
interface List< T> 和 class TestGen< K,V>
其中,T,K,V不代表值,而是表示类型。这里使用任意字母都可以。常用T表示,是Type的缩写。
2、泛型的实例化:
List< String> strList = new ArrayList< String>();
Iterator< Customer> iterator = customers.iterator();
T只能是类,不能用基本数据类型填充。
对于泛型类(含集合类)
对象实例化时不指定泛型,默认为:Object。
静态方法中不能使用类的泛型。
不能在catch中使用泛型
从泛型类派生子类,泛型类型需具体化
对于泛型方法
在泛型方法中可以定义泛型参数,此时,参数的类型就是传入数据的类型。
泛型方法的格式:
[访问权限] <泛型> 返回类型 方法名([泛型标识 参数名称]) 抛出的异常
//实现数组到集合的复制public <E> List<E> fromArrayToList(E[] e,List<E> list){ for(E e1 : e){ list.add(e1); } return list;}
三、泛型与继承的关系
Object obj=null;String str="AA";obj=str;Object[] obj1=null;String[] str1=new String[]{"AA","BB","CC"};obj1=str1;List<Object> list=null;List<String> list1=new ArrayList<String>();//list=list1; 错误//通配符 ? List<A>、List<B>、......都是List<?>的子类List<?> list2=null;list2=list;list2=list1;//? extends A :可以存放A及其子类 小于等于A类型List<? extends Number> list3=null;List<Integer> list4=null;list3=list4;//list3=list; 错误 Object 不是Number的子类//? super A :可以存放A及其父类 大于等于A类型List<? super Number> list5=null;list5=list;
若类A是类B的子类,那么List< A>就不是List< B>的子接口
0 0
- 尚硅谷java学习笔记——8.java泛型(Generic)
- 尚硅谷java学习笔记——11.java多线程
- 尚硅谷java学习笔记——2.基本语法
- 尚硅谷java学习笔记——6.异常处理
- 尚硅谷java学习笔记——14.网络编程
- 尚硅谷java学习笔记——JUC(java.util.concurrent)
- 尚硅谷java学习笔记——NIO(New IO)
- 尚硅谷Java基础学习笔记一
- 尚硅谷Java基础学习笔记二
- 尚硅谷Java基础学习笔记三
- 尚硅谷Java基础学习笔记四
- 尚硅谷Java基础学习笔记五
- 尚硅谷java学习笔记——1.java语言概述
- 尚硅谷java学习笔记——9.java枚举&注解
- 尚硅谷java学习笔记——10.java IO流
- 尚硅谷java学习笔记——12.java常用类
- 尚硅谷java学习笔记——13.java反射机制
- 尚硅谷Java基础笔记
- Codeforces 757B Bash's Big Day 【数论】
- Reclerview下拉刷新,上拉加载更多
- java基础--2.基本语法-1
- 手把手教你DIY一个春运迁徙图(一)
- Kibana using lots memory
- 尚硅谷java学习笔记——8.java泛型(Generic)
- Linux下配置jdk环境变量
- 从Zachman企业架构框架想到的
- 面试题c++
- webService学习(一)—— hello world
- BUPT OJ 中序遍历序列
- dp总结
- 高可用性系统的实践与经验
- Plplot绘制简单2D函数图