Java程序设计:031001_泛型入门_第1页
Java程序设计:031001_泛型入门_第2页
Java程序设计:031001_泛型入门_第3页
Java程序设计:031001_泛型入门_第4页
Java程序设计:031001_泛型入门_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 MLDN 软件教学研发部软件教学研发部JAVA 应用开发详解应用开发详解泛型 泛型入门本章目标 掌握泛型的产生意义 掌握泛型的基本使用 了解泛型的警告信息及泛型的擦除为什么要有泛型? 现在有以下的实例要求: 现在要求设计一个可以表示出坐标点的类,坐标由X和Y组成,坐标的表示方法有以下三种: 整数表示:x = 10、y = 20 小数表示:x = 10.5、y = 20.6 字符串表示:x = 东经180度、y = 北纬210度 问:问:此类该如何设计? 题目分析 一看到这样的要求,读者首先就要考虑到,必须建立好一个表示坐标点的类 Point,此类中有两个属性分别用来表示x坐标和y坐标,但是x

2、和y中所保存的数据类型会有三种(int、float、String),而要想使用一个类型可以同时接收这样的三种类型数据,则现在只能使用Object,因为Object类可以接收任何类型的数据,都会自动发生向上转型操作,这样三种数据类型将按以下的方式进行转换: 数字(int) 自动装箱成Integer 向上转型使用Object接收 小数(float) 自动装箱成Float 向上转型使用Object接收 字符串(String) 向上转型使用Object接收 设计Point类 class Point private Object x;/ 表示x坐标private Object y;/ 表示y坐标publ

3、ic void setX(Object x) this.x = x;public void setY(Object y) this.y = y;public Object getX() return this.x;public Object getY() return this.y;代码的问题public class GenericsDemo04 public static void main(String args) Point p = new Point() ;p.setX(10) ;/ 利用自动装箱操作:int - Integer - Objectp.setY(北纬210度) ;/ St

4、ring - Objectint x = (Integer)p.getX() ;/ 取出数据int y = (Integer)p.getY() ;/ 取出数据 此处出现了类转换错误此处出现了类转换错误System.out.println(整数表示,整数表示,X坐标为:坐标为: + x) ;System.out.println(整数表示,整数表示,Y坐标为:坐标为: + y) ;泛型 泛型可以解决数据类型的安全性问题,它主要的原理,是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这样在类声明或实例化的时候只要指定好需要的类型即可。 泛型类定义格式:访问权限 c

5、lass 类名称访问权限 泛型类型标识 变量名称 ;访问权限 泛型类型标识 方法名称() ;访问权限 返回值类型声明 方法名称(泛型类型标识 变量名称) ; 泛型对象定义 类名称 对象名称 = new 类名称() ;声明泛型 class Point / 此处可以是任意的标识符号,T是type的简称private T var;/ 此变量的类型由外部决定public T getVar() / 返回值的类型由外部指定return var;public void setVar(T var) / 设置的类型由外部指定this.var = var;public class GenericsDemo05 p

6、ublic static void main(String args) Point p = new Point() ;/ 里面的var类型为Integer类型p.setVar(30) ;/ 设置数字,自动装箱System.out.println(p.getVar() * 2);/ 计算结果,按数字取出设置泛型的要求 在泛型的指定中,是无法指定基本数据类型的,必须设置成一个类,这样在设置一个数字的时候就必须使用包装类,而在JDK 1.5之后提供了自动装箱的操作,操作时也不会太复杂。 泛型应用中的构造方法 构造方法可以为类中的属性初始化,那么如果类中的属性通过泛型指定,而又需要通过构造设置属性内容的时候,那么构造方法的定义与之前并无不同,不需要像声明类那样指定泛型。 使用格式: 访问权限 构造方法 ( 参数名称)指定多个泛型类型 如果一个类中有多个属性需要使用不同的泛型声明,则可以在声明类的时候指定多个泛型类型。 class Notepad / 此处指定两个泛型类型private K key;/ 此变量的类型由外部决定private V value;/ 此变量的类型由外部决定public K getKey() return key;public void setK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论