AJPFX总结泛型概念和使用
泛型泛型(generic)概述和基本使用
泛型把明确数据类型的操作放到创建对象或者调用方法的时候再明确。
JDK1.5之后的新特性。
格式:
<引用数据类型>
好处:
泛型保证集合中的数据类型一致,提高安全性。把运行期异常提前到编译期。
那么在JDK1.5之前怎么实现参数的任意化呢?
是通过接收Object类型的参数实现的。因为任意类直接或间接继承自Object。
但这样实现的缺点就是,还是不能保证数据类型的安全一致。
Object obj1 = new Student();
Object obj2 = new Teacher();
上面两个对象都声明为Object类型,那获取元素的时候到底该如何转型呢?还是存在问题。
应用:
泛型类
泛型接口
泛型方法
2、ArrayList存储字符串和自定义对象并遍历泛型版
3、泛型的由来
补充:泛型擦除
查看下述两个方法:
public void show(ArrayList<String> list) {}
public void show(ArrayList<Integer> list){}
/*
* 上述两个方法是不会形成方法的重载的,会报方法已存在的错误。 原因:泛型擦除
* 泛型是1.5中引入的一个新的概念,由于不用进行强制转换类型了,所以具有较高的安全性和易用性。
* 因为泛型其实只是在编译器中实现的而虚拟机并不认识泛型
* ,所以要在虚拟机中将泛型类型进行擦除。也就是说,在编译阶段使用泛型,运行阶段取消泛型,即擦除。
* 擦除是将泛型类型以其父类代替,如String变成了Object等。
* 其实在使用的时候还是进行带强制类型的转化,只不过这是比较安全的转换,因为在编译阶段已经确保了数据的一致性。
*/
4、泛型类的概述及使用
明确数据类型的工作放到了创建对象的时候
5、泛型方法的概述和使用
明确数据类型的工作放到了调用方法的时候
方法泛型 <> 加在返回值前面。
6、泛型接口的概述和使用
一种是子类实现接口的时候明确数据类型
interface Fu<T>{}
class Zi implements Fu<String>{}
一种是子类继续使用泛型:
class Zi<T> implements Fu<T>{}
7、泛型高级之通配符
<?> -- 泛型通配符
<? extends E> -- 向下限定,接收E及其子类类型
<? super E> -- 向上限定,接收E及其父类类型
原理:多态。 -- 父类引用指向子类对象。 Fu fu = new Zi();
最新文章
- 将字符串转换成JSON对象
- PHP的命名空间 与类是自动加载
- 圣诞老人去哪?Power BI告诉你
- U盘centos7系统安装http://www.augsky.com/599.html
- 我所了解的 京东、携程、eBay、小米 的 OpenStack 云
- hadoop data 相关开源项目(近期学习计划)
- go 初使用
- C/C++ 笔试、面试题目大汇总 转
- POJ——放苹果
- IOS基础开发一(ios程序运行过程)
- mybatis----增删改查
- 如何给grldr.mbr和grldr改名
- C语言之循环结构
- Python-基础学习-Day1
- POJ 2594 Treasure Exploration(最小可相交路径覆盖)题解
- http-equiv制作跳转欢迎页面
- 应用多种变形CSS3
- ACCESS_TOKEN与FRESH_TOKEN
- erlang的进程池。
- C++ - 派生类强制转换为基类
热门文章
- 在matlab中生成m序列
- c++代码赏析之类对象传參
- Unity5.1 新的网络引擎UNET(八) UNET 系统概括
- Interpret bytes as packed binary data
- What Is the Linux Lokkit Utility? https://www.lifewire.com/what-is-lokkit-2192255
- 可用内存free不足 hadoop3 无法启动 手动释放缓存 cache
- Buildroot用户指南【转】
- Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间
- 855E
- ChartCtrl源码剖析之——CChartTitle类