泛型

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體:   |    |    |  超大  

泛型概述:ClassCaseException:类型转换异常。

代码中不加泛型,编译没问题,运行可能会发生异常。但是用户解决不了,这样程序就存在安全隐患。所以我们希望在编译时期就能看出问题,程序员解决看后到运行时期就没有问题了。

问题产生的原因:往集合里面存了不同元素造成的。

泛型:JDK1.5版本以后出现新特性,用于解决安全问题,是一个类型安全机制。

好处:

1,将运行时期出现问题ClassCastException,转移到了编译时期,方便于程序员解决问题。让运行事情问题减少,安全。

2,避免了强制转换麻烦。

泛型格式:通过<>来定义要操作的引用数据类型。

在使用java提供的对象时,什么时候写泛型呢?通常在集合框架中很常见,只要见到<>就要定义泛型。其实<>就是用来接收类型的。

当使用集合时,将集合中要存储的数据类型作为参数传递到尖括号中即可。

什么时候定义泛型类?

当类中要操作的引用数据类型不确定时,早期定义Object来完成扩展,现在定义泛型类完成扩展。

泛型定义在类上:泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。

泛型定义在方法上:为了让不同的方法可以操作不同类型,而且类型还不确定,那么可以将类型定义在方法上。

注意泛型定义在方法上,是放在返回值类型的前面,修饰符的后面。

注意特殊之处:静态方法不可以访问类上定义的泛型。如果静态方法操作的引用数据类型不明确,可以将泛型定义在方法上。(静态泛型不能随着类的泛型走)

泛型定义在接口上。见到带泛型的内容的时候,用的时候往里面传参数。这个应用一般不多见,是Java定义好就直接拿来用。

泛型的高级应用(泛型限定)当我们创建两个操作不同类型的集合时,不需要写两个迭代器。

“?”:通配符。也可以理解为占位符。

泛型的限定:是用于泛型扩展用的。

1,? extends E: 可以接收E类型或者E的子类型。(上限)

2,? super E : 可以接收E类型或者E的父类型。(下限)

。。。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航