您的位置:首页 > 职场人生

黑马程序员.Android攻城狮.JAVA基础.1.8.Java泛型

2014-06-25 17:01 483 查看
Java泛型

---------- android培训、java培训、期待与您交流!----------

1、泛型的概念

在JDK1.5之后,Java中出现了泛型的概念,主要是为了解决数据类型的安全问题。将运行时期的问题ClassCastException问题转换成了编译失败,体现在编译时期,程序员就可以解决问题。

使用泛型的主要原理就是:在类的声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值类型及参数类型。这样在类声明或者实例化的时候只要制定好需要的类型即可。

2、泛型的使用

泛型用“<E>”来表示,其中的E并没有实际的意义,可以为任意的字母,E代表一个数据类型,并且这个类型是由外部定义的,当使用时“<E>”用来接收外部所定义的类型。

在不使用泛型之前,当类中操作的引用数据类型不确定的时候,用Object来进行扩展,现在可以用泛型来表示,这样可以避免强转的麻烦,而且将运行问题转移到的编译时期。

(1) 泛型可以定义类

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

(2) 泛型可以定义方法

为了让不同方法操作不同的数据类型,可以将泛型定义在方法上。

(3) 泛型可以同时定义在类与方法中

(4) 静态方法不可以访问定义在类上的泛型,可以将泛型定义在静态方法上,且<>要放在返回值类型前

(5) 泛型也可以定义在接口上

(6) 也可以对类指定多个泛型

3、通配符

通配符的概念:在以上的泛型中都是指定了一个固定的类型,而使用通配符则可以解决当具体类型不确定的情况,这个通配符就是 “?” ,当操作类型时,不需要使用类型的具体功能时,只使用Object类中的功能。那么可以用 “?” 通配符来表未知类型。

在引用传递时,在泛型的操作中也可以设置一个泛型对象的范围上限及下限,即:泛型限定。

(1) 上限:使用“?extends E”可以接收E类型或者E的子类型对象,如下示例:

(2 )下限:使用“?super E”可以接收E类型或者E的父类型对象。

上限什么时候用:往集合中添加元素时,既可以添加E类型对象,又可以添加E的子类型对象。为什么?因为取的时候,E类型既可以接收E类对象,又可以接收E的子类型对象。

下限什么时候用:当从集合中获取元素进行操作的时候,可以用当前元素的类型接收,也可以用当前元素的父类型接收。

---------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: