首页 技术 正文
技术 2022年11月21日
0 收藏 790 点赞 3,357 浏览 1360 个字

=========== ASP.Net+Android+IOS开发、.Net培训、期待与您交流!===========

  没有使用泛型时,只要是对象,不管是什么类型的对象,都可以存储进同一个集合中。使用泛型集合,可以将一个集合中的元素限定为一个特定类型,集合中只能存储同一个类型的对象,这样更安全;并且当从集合获取一个对象时,编译器也可以知道这个对象的类型,不需要对对象进行强制类型转换,这样更方便。泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器阻挡源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。

  泛型格式:通过<>来定义要操作的引用数据类型。在使用java提供的对象时,什么时候写泛型呢?通常在集合框架中很常见,只要见到<>就要定义泛型。其实<> 就是用来接收类型的。当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。早期类中要操作的引用数据类型不确定的时候,只能定义Object来完成扩展,现在可以定义泛型来完成扩展。

  1. ArrayList<E>类定义和ArrayList<Integer>类引用中涉及如下术语:

  • 整个ArrayList<E>称为泛型类型
  • ArrayList<E>中的E称为类型变量或类型参数
  • 整个ArrayList<Integer>称为参数化的类型
  • ArrayList<Integer>中的Integer称为类型参数的实例或实际类型参数
  • ArrayList<Integer>中的<>念作typeof
  • ArrayList称为原始类型

  2. 参数化类型与原始类型的兼容性,在如下两种情况下编译器报告警告:

  • 参数化类型引用一个原始类型的对象:Collection<String> c = new Vector();
  • 原始类型引用一个参数化类型的对象:Collection c = new Vector<String>();

  3. 参数化类型不考虑类型参数的继承关系,如下两种情况均会编译失败:

  • Vector<String> v = new Vector<Object>();
  • Vector<Object> v = new Vector<String>();

  4. 编译器不允许创建泛型变量的数组。即在创建数组实例时,数组的元素不能使用参数化的类型,援引:http://www.blogjava.net/sean/archive/2005/08/09/9630.html

  5. 泛型中的?通配符:使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法。

  6.泛型方法:泛型类定义的泛型,在整个类中有效。如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上。注意:静态方法不可以访问类上定义的泛型。

———–☆———–ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ———–☆———–

详细请查看: http://edu.csdn.net

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,914
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,438
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,252
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,063
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,698
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,734