泛型 简谈
2016-03-22 17:12
232 查看
一. 概述
1. 类型
引入泛型前:基本类类型 复杂类型
引入泛型后:复杂类型可以在细分为更多的类型
如原先的类型List,现在在细分成
等更多的类型
2.方法
方法需要实现多个参数类型,需要重载多个方法
现在用泛型可以直接解决
二 泛型的定义和使用
1) 命名
K --- 键
V --- 值
E --- 异常类
T --- 泛型
? --- 通配
2)定义带类型参数的类
紧跟类名之后的<>,指定一个或者多个类型参数的名字
父类定义的类型参数不能被子类继承
定义带类型参数的方法
如果只是想实现多态,则优先使用通配符:
3)对带类型参数的类进行类型参数的赋值
声明类变量或者实列化
三 实现原理
1)java泛型时编译时技术,在运行时不包含泛型信息,仅仅在Class 的实列中包含了类型参数的的定义信息。
2)一个泛型类被其所有的调用共享
结果为true
四 Class 泛型的处理
String.class 类型代表Class<String> ;
1. 类型
引入泛型前:基本类类型 复杂类型
引入泛型后:复杂类型可以在细分为更多的类型
如原先的类型List,现在在细分成
List<Object>, List<String>, List<Integer>
等更多的类型
2.方法
方法需要实现多个参数类型,需要重载多个方法
public void write(Integer i, Integer[] ia); public void write(Double d, Double[] da);
现在用泛型可以直接解决
public <T> void write(T t, T[] ta);
二 泛型的定义和使用
1) 命名
K --- 键
V --- 值
E --- 异常类
T --- 泛型
? --- 通配
2)定义带类型参数的类
紧跟类名之后的<>,指定一个或者多个类型参数的名字
父类定义的类型参数不能被子类继承
<span style="font-size:12px;">public class TestClassDefine<T, S extends T> { .... }</span>
定义带类型参数的方法
<T> void test(List<T> s){}
如果只是想实现多态,则优先使用通配符:
void GenericMethodDefine(List<?> s){}
3)对带类型参数的类进行类型参数的赋值
声明类变量或者实列化
List<String> list = new ArrayList<String>();继承类或者实现接口时
class MyList<E> extends ArrayList<E> implements<E>{}</span>
三 实现原理
1)java泛型时编译时技术,在运行时不包含泛型信息,仅仅在Class 的实列中包含了类型参数的的定义信息。
2)一个泛型类被其所有的调用共享
<span style="font-size:18px;"> List<String> l1 = new ArrayList<String> (); List<String> l2 = new ArrayList<String> (); System.out.prinnln( l1.getClass() == l2.getClass());</span>
结果为true
四 Class 泛型的处理
String.class 类型代表Class<String> ;
相关文章推荐
- 11、JQuery知识点总结
- 字符串中数字求和
- Linux下php安装Redis扩展
- zepto返回顶部动画
- 每天一个linux命令(60):scp命令
- Docker数据管理
- presto hbase
- Hibernate各种主键生成策略与配置详解
- HDU 1060:Leftmost Digit【数学】
- C++ Chapter 1. General(综述)
- 第二周项目4:穷举法解决组合问题
- R语言之导入数据源(一)
- 编译安装ckermit串口调试助手
- 部署开发常用工具
- 深入理解CSS定位中的堆叠z-index
- Linux下multipath多路径配置
- Redis 学习 ---- 8.对象
- ANDROID ASSET STUDIO
- 第一次接触Oracle存储过程
- 一款超炫3D旋转立方体动画特效